在哪里可以找到“针对Git用户的SVN”资源?[关闭]


18

因此,我从事了该公司使用SVN的工作(但将来会转移到Git)。问题是我不了解SVN。我已经尝试过许多Google查询,而我所能找到的都是SVN-> Git教程,“为什么Git比SVN更好”博客以及一个特定的“备忘单”,它给出了(一些)可比的命令。

缺少阅读O'Reilly关于SVN的书,对于Git用户,向SVN的简要说明(但不是简短)是什么?


3
简而言之:a)没有索引,b)svn up = git pull,c)svn commit = git commit && git push d)分支由目录模拟... ;-)
johannes

1
我不确定如何才能在主题上做更多……
agent154 2014年

5
没门。在P.SE上,几乎所有内容都不在话下。
JensG

@ agent154不要要求我们成为您的众包搜索引擎。确定您遇到的问题-问题不是“我在哪里可以在svn上找到东西”,而是“我正在尝试做某事,但是我不知道该怎么做。” 如果那是命令'svn'所特有的,并且您正在编写它,请询问Stack Overflow。如果这与svn的工作流程和组织有关(何时分支,何时合并,如何与其他开发人员合作)-请在此处提出。

2
我认为,所发现的问题是缺乏资源,即使是从某种程度上远程可用的方式也无法将SVN理解为Git用户。坦率地说,在仔细阅读了Google / DuckDuckGo的几页结果后,我发现有关此超级功能的讨论非常有用,但没有找到OP提到的内容。
传记作者2014年

Answers:


8

规范参考是Subversion RedBook。无论您过去有什么技能,都请重新阅读此书,您将获得所需的所有使用信息。它并不困难,也不是完全陌生,大多数人说SVN比git更容易理解,因此您只需阅读一些主要命令就可以了。的基本用法章应该让你和没有问题运行。

有两个主要区别:

  • commit =推送到中央仓库。没有变基或本地提交,也没有拉取。
  • 分支是按目录进行的。最好将整个存储库视为目录结构,分支就像使用写时复制语义建立符号链接。而在git中,您分支整个仓库,并在它们之间切换,以便新分支“覆盖”您的工作副本,而使用SVN,您可以交换出仓库的一部分。通常,人们在顶级文件夹(通常称为分支)上分支,因此切换变得更像git的“覆盖”工作方式。

分支是微不足道的,合并远没有DVCS辩护者想要的那么糟糕,尤其是如果您坚持使用顶级文件夹的“标准”三重奏(称为主干,分支和标签)。

SVN击败了git,稀疏目录浮现在脑海-在这里您仅签出仓库的一部分。当您需要更多零件时,只需更新所需的内容。如果您有大量的仓库(例如核心产品和大量的插件),那就太好了。

有几点不如git好,令人想到的是可怕的树冲突-您在目录级别有冲突(即有人删除了您编辑的文件)

如果您使用的是Windows,请使用TortoiseSVN。它主要摇摆。


要看。当文件已被某人移动(又是由SVN本身管理的删除+添加的一种有教养的形式)并由其他人更改时,与SVN合并变得很糟糕。除此之外,很好的答案。
JensG

1
我确实提到了树冲突问题...这种状态对于其他scms来说是个问题,尽管我知道git使用一种启发式方法来检测移动的文件是否相同,但是如果更改很大,它仍然会出错(例如将文件拆分为2)。
gbjbaanb 2014年

Git不需要启发式检测树的变化-它需要用户使用来移动文件git mv。SVN有svn move,但由于在SVN中进行分支和合并有点麻烦,所以我不认为它可以像git一样自动解决树冲突...
Idan Arye 2014年

3
@IdanArye git mv被实现为add + remove。git使用试探法来确定在提交期间是否进行了移动或复制(我认为默认值为“文件的80%+是否相同?”)
Izkata 2014年

3

尽可能使用git svn。我一直在你的情况,经过半年的挫败后,我切换到git svn,从那时起一直很高兴。

Git svn允许您在本地使用存储库,然后通过来处理提交到SVN服务器的操作git svn rebase,该操作会将您的本地更改重新git svn dcommit部署到Subversion干线上,然后提交经过重新提交的提交。

对于高级Subversion的使用来说,这可能不是最佳选择,但是由于您在本地使用git,所以一切都很好。

使用git clone时,您不应该克隆Subversion根文件夹,而应直接克隆目标目录(clone trunk)。这将使git运行快得多,否则您的工作副本可能会变得很大。

免责声明:当您要创建Subversion分支等时,我不知道情况如何。与我合作的团队没有使用分支(只是我的本地git分支)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.