---截至2013年,这条线路已经非常糟糕---
当存储库主要由单个开发人员访问时,是否值得从SVN转到GIT?我有几台机器用于开发,而不是主要用C#开发。但我在我的存储库中混合使用VB,VB.Net,PHP,C#,C ++,HTML,Batch,BASH等等。通过从SVN迁移到GIT,我将获得什么?现在使用TortoiseSVN + VisualSVN Server与一组中央存储库和几个客户端机器。虽然我已授予一些朋友访问我的存储库的权限,但他们并不经常更新或提交(如果有的话)。
还有一种方法可以使用VisualSVN Server + TortiseSVN和Git获得灵活性和易维护性吗?
((我会咬人......对于一个开发者/小组来说,其他平台和技巧会引人注目吗?)
请列出优点和缺点,而不只是单方面的意见。
当前工具链...... Visual Studio 2008(C#/ VB.Net)+ TortoiseSVN + VisualSVN
主要焦点...... XNA游戏,WCF /套接字服务,Web开发
答案 0 :(得分:23)
我可以给你三个好处:
有一个缺点;这就是Windows上可用的可视化工具不像其他平台可用的那些用户友好。
答案 1 :(得分:15)
是的,当然。
你误解了git是什么。我的意思是,你为什么认为它只对团队有用?
如果你是一个开发人员,那么git更值得。grep
或ls
或任何其他简单的命令行实用程序一样。您无需设置任何服务器或类似的任何服务器。winmergeu <conflictfile>
来解决冲突。 (注意:WinMerge不是命令行合并工具,它是一个可视化合并工具,具有正常的gui)。我没有注意到你在几台不同的机器上工作过。
它没有什么区别,只要你切换到另一台机器就必须记住推拉,但你已经使用svn:commit / update执行此操作。
你将获得分支/合并的力量。不要低估这种力量。
你有多少次想过实现一些疯狂的想法,但从来不敢这么做,因为你不想弄乱你的代码? git让你免于这些烦恼。只是在分支中执行它,如果它运行,将它合并到主分支,如果没有,删除分支并忘记它。
当然,你可能会说你可以对svn revert
做同样的事情,在你开始疯狂的想法之前恢复到修订版。但是,如果你同时修复了错误修复怎么办?如果你恢复了疯狂的想法,你将失去在尝试疯狂想法时所做的所有错误修复/维护工作。
答案 2 :(得分:15)
除了已经说过的话,如果你是一个开发人员并且没有遇到过SVN的麻烦,我认为没有理由转换。 svnserve(守护进程)在本地工作正常(我有OS X)。
与Git工具相比,TortoiseSVN是一种祝福......你有什么特别的理由想要摆脱Subversion吗?
答案 3 :(得分:8)
这实际上取决于您的工作流程。你经常在无法到达svn服务器的地方工作吗?你的项目是否有大量的分支,因为你喜欢同时处理几个(大)的事情?你在机器之间复制工作副本吗?你是否从现有的分支机构中拆分了新的分支机构?你有时在后备箱上工作,在一堆变化的中途想到“我应该在一个分支中做到这一点”吗?如果是这样,那么它可能会有用。
从单一开发人员的角度来看,像svn这样的中央系统和像git这样的分散系统之间的主要区别在于,在svn中,修订是线性的。用git它是一棵树。当您处理要在多次提交中执行的更大功能时,这非常有用。
示例:您有一个很大的功能F,包括更改a,b,c和d。使用Subversion,您可以在主干上单独提交a,b,c和d,或者您创建一个分支,这意味着您必须进行大量合并。使用git,您可以查看工作副本,提交a,b,c和d。然后你将它作为单个更改F推送给你的主人。因此,您只需在主干上看到一次提交,而不是四次提交。这样可以更容易地从日志中看到发生了什么。
您也可以使用svn分支执行此操作。但现在假设a部分也包含多个部分,如a1和a2。
这样的开发模型可以用Subversion完成。例如,Python Twisted以这种方式完成。所有的开发都是在分支上进行的,没有人在主干上工作。但是git使这样的工作流程更容易。
答案 4 :(得分:5)
我在Windows下使用Visual Studio 2008以
描述的方式使用了这些系统如果你重视自己的生活,不 永远使用Visual Source Safe ......
答案 5 :(得分:4)
Git可能引人注目的一件事是你可以继续工作并离线提交。所以,当你在飞机上时,带上你的笔记本电脑并照常提交。当您重新上线时,您可以回到主仓库。
如果你发现你做了大量的分支,你可能会更喜欢Git,因为它的设计是为了使分支/合并变得简单和普通。
更新:请注意,您可以在不承诺的情况下测试Git,因为Git can talk to SVN repos。所以试一试,如果你不喜欢它,什么都不会丢失!
答案 6 :(得分:3)
试试吧,安装msysgit,然后
git svn clone svn://mysvn/repo/
Git for beginners: The definitive practical guide中的部分资源应该有所帮助(Gitcasts和Git Magic尤其如此)
就个人而言,我发现一般情况下使用git更加愉快。大约两年前我将我的个人SVN回购转换为git,并且从来没有遇到任何问题
不必担心您的SVN服务器很好(不需要对它进行持续的网络访问),因此能够轻松创建存储库(它们只是包含另一个.git
文件夹的文件夹),执行任何操作(提交,分支等),然后决定用一两个简单的命令将代码放在Github上。
它通常很“快速”(几乎所有动作基本上都是即时的),一切都在“离线”,克隆是完整备份......但我继续使用它的主要原因是Github
答案 7 :(得分:2)
没有。至少不适合我。为单个开发人员提供非集中式回购有什么意义?
此外,Git Windows工具还不太适合TortoiseSVN吧。
答案 8 :(得分:1)
看看Bazaar(bzr)。说真的,这太棒了。我见过的最佳合并能力。
答案 9 :(得分:1)
前段时间我从svn转到Git。我同意上面几个关于Git分布式架构优于svn的优点的答案(比如能够在我的记事本上随身携带我的回购),但令人信服的理由更为平凡。
现在(2013年2月)根文件夹中只有一个.svn文件夹!
我在Linux上使用svn客户端遇到了一些不好的经历,看似简单的操作,比如移动文件然后在使用100%CPU提交系统挂起之前修改它! (不,它不是导致崩溃的其他因素,我可以随意重复它)。从未在Git工具中遇到过这样的问题。
我在旧的svn存储库中的trunk和stable分支之间合并代码也有些糟糕的时间。 Git真的很容易。
现在,我采取了这一举措,因为我使用svn感觉很糟糕,如果它适合你,那么真的没有迫切的需要改变。程序员的真正任务是使用代码,存储库只是至少不会妨碍他的方式的工具。这就是为什么svn对我不起作用的原因。
答案 10 :(得分:0)
如果您习惯使用Tortoise SVN,那么您应该尝试使用Mercurial,它具有类似shell扩展Tortoise HG的Windows程序包。 Joel Spolsky也在Fog Creek使用Mercurial(根据他在他的一个播客中的说法)。
软件包是完全独立的,我能够立即安装和使用Mercurial(甚至不需要服务器!)