有一段时间我一直在为我的个人项目使用subversion.
我越来越多地听到关于Git和Mercurial以及DVCS的一般情况.
我想给整个DVCS带来一些旋转,但我对这两种选择都不太熟悉.
Mercurial和Git有什么区别?
注意:我不是要找出哪一个是"最好的",甚至不应该从哪个开始.我主要寻找他们相似的关键领域,以及他们不同的关键领域,因为我有兴趣知道他们在实施和理念方面有何不同.
我正在尝试将SVN repo转换为多个git repos.到目前为止,我一直在使用git svn clone svn_repo_project_pathSVN中的每个项目.我注意到git似乎没有遵循svn复制操作,因此生成的历史比我预期的要简单得多.假设我的SVN repo看起来像这样:
根
项目b和c在最近复制parent-proj的重组计划与最终从自己的老位置删除它们下根的意图的一部分.当我这样做git svn clone http://svnhost/parent-proj所产生的git仓库丢失所有源自历史/b和/c之前的举动.
这是git-svn的限制还是有一些方法可以让这个历史出现在我的回购中?根据我的有限研究,似乎使用获取已使用git-svn重命名的SVN repo的完整历史记录中filter-branch描述的命令可能有效,尽管在我的情况下有多个父项可能使事情复杂化.可以首先克隆整个仓库,然后从中拆分新的仓库(使用filter-branch?)是一种更好的方法吗?
读完这个问题后,我想到了这个问题:Git真的可以跟踪单个功能从一个文件到另一个文件的移动吗?如果是这样,怎么办?
这是worfklow:
“很久以前”,我们将一个大文件拆分为folder/file.py许多文件:folder1/file.py,folder2/file.py依此类推。
git blame -C当我们查看时folder2/file.py,正确显示了该代码的历史记录,我们看到一些提交是在拆分之前进行的。
问题是我们继续维护仍然具有的旧版本代码,folder/file.py当我们将修补程序合并回“当前”版本时,git继续重新创建该文件夹folder,并且看不到folder/file.py应将所做的修补程序合并到其中folder1/file.py或folder2/file.py取决于此代码块现在位于何处。
我快速看了一下,git help merge但没有发现任何东西。