在svn的分支概念对git

时间:2016-12-12 16:17:44

标签: git svn version-control git-branch

我来自git背景,因此对导致此问题的任何严重错误构成道歉。

在git中,当在branches之间切换时,工作副本总是说"调整"反映分阶段的文件。

所以,例如在branchA中工作时,其中包含一个名为branchA-folder的文件夹,而master分支尚未包含此文件夹,正在运行git checkout master(确定,在保留或提交您的文件夹后)更改)将使文件夹branchA-folder"消失"从您的文件系统(工作目录),对吧?

除非我错了,否则这允许git维护工作目录的一个本地副本,该副本始终反映分支的(暂停)状态。

svn是什么情况?

  1. 以上开关(svn switch <branchA-url>)会使branchA-folder&#34;消失吗?&#34;?
  2. svn是否维护每个分支/标记的工作目录的实际副本
  3. THX。

2 个答案:

答案 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不会复制中央服务器中的目录内容。不,如果您手动cpsvn add。这比git更糟糕(git和#34中的每个对象;数据库&#34;只存储一次)。