我来自git
背景,因此对导致此问题的任何严重错误构成道歉。
在git中,当在branches
之间切换时,工作副本总是说"调整"反映分阶段的文件。
所以,例如在branchA
中工作时,其中包含一个名为branchA-folder
的文件夹,而master
分支尚未包含此文件夹,正在运行git checkout master
(确定,在保留或提交您的文件夹后)更改)将使文件夹branchA-folder
"消失"从您的文件系统(工作目录),对吧?
除非我错了,否则这允许git
维护工作目录的一个本地副本,该副本始终反映分支的(暂停)状态。
svn
是什么情况?
svn switch <branchA-url>
)会使branchA-folder
&#34;消失吗?&#34;?THX。
答案 0 :(得分:2)
我认为需要考虑的相关差异是Subversion允许签出任意数量的工作副本并让它们同时存在,因为工作副本只是一个带有附加存储库URL的目录。因此,当您切换到分支时,Subversion假定您希望保留本地更改,并将传入的更改合并到它们中(如果有的话)。它也被迫假设,因为目前没有搁置功能:以后无法保存您的更改。
免责声明:我没有任何git背景
答案 1 :(得分:0)
要了解svn如何处理您需要实现的事情,SVN不会真正支持标记和分支。分支/标记只是放置在某个其他子目录中的trunk目录的副本。为了使其易于管理,svn实现&#34;廉价&#34;副本(但仅限于服务器端)。
以上开关(svn switch branchA-url)是否会使branchA-folder&#34; dissapear&#34;?
是。它将从工作副本中删除(如果它由SVN版本化)。您甚至可以svn switch ^/branchA-url/branchA-folder
- 从SVN的角度来看,目录和分支之间没有区别。
svn是否为每个分支/标记维护一个工作目录的实际副本?
我不确定我是否正确理解您的问题 - 如果svn copy
被正确用于创建目录(或分支或标记),SVN不会复制中央服务器中的目录内容。不,如果您手动cp
和svn add
。这比git更糟糕(git和#34中的每个对象;数据库&#34;只存储一次)。