我知道并使用两个版本控制系统:Subversion和git。到目前为止,Subversion被用于我是唯一开发人员的个人项目,而git被用于开源项目和我相信其他人也可以在该项目上工作的项目。这主要是因为git惊人的分叉和合并功能,每个人都可以在自己的分支上工作。非常方便。

现在,我将Subversion用于个人项目,因为我认为git在这里毫无意义。这似乎有点过大。如果我是唯一的开发人员,则将其集中(通常在我的家庭服务器上)对我来说是可以的;我还是要定期备份。我不需要建立自己的分支的能力,主要分支是我的分支。是的,SVN对分支有简单的支持,但是我认为对它的更强大的支持是没有意义的。合并可能会很痛苦,或者至少从我的小经验中来说是很痛苦的。 br />

评论

不,我将git和hg用于个人项目。拥有本地修订控制是天赐之物。

无论是否有大量的贡献者,Git在许多方面都对所有项目都更好:git压缩东西比svn效率高得多(并且数量级更快!),git使备份变得微不足道,而git不会如果其他人想贡献,就会成为障碍。

我使用版本控制将我的代码推送到github或bitbucket,它将服务器备份为我,也许有一天我会写一些人们真正感兴趣的东西。

“我不需要建立自己的分支的能力,主要分支是我的分支。”当撤消是应用程序中的一个相对较新的功能时,很多人对撤消也有同样的看法。现在每个人都意识到他们一直都需要它。您需要分支,只是不知道。

@rtperson是的,您可以这样做,但实际上我更喜欢购买,即使我更喜欢github而不是bitbucket。

#1 楼

这不是矫kill过正。我开始对个人项目使用Git和Mercurial over Subversion的主要原因是,启动存储库要容易得多。

要开始一个新项目吗? br />
BAM!无需设置存储库服务器,也不需要检入文件夹结构来支持将分支和标签放入Subversion存储库中。 )。尝试通过Subversion快速做到这一点!

评论


公认。事实证明,我对git的过度杀伤比这更错了;)

–安托
2011年4月18日在19:10

Steve341:我通常将所有源代码项目保存在一个名为“ projects”的文件夹中。那是我保存所有存储库的地方,每个源代码项目一个。我从来不需要在一个和相同的VCS存储库中一起跟踪多个项目。这就是Ivy或Maven等依赖管理系统的用途。

–说话
2011年4月18日在20:13

@ Steve341跟踪这些东西有多么困难?您只有一个包含所有存储库的文件夹。除了使用git时系统是非常糟糕的做法外,它与您的系统没有什么不同...

–替代
2011年4月18日在22:53

@ Steve314:在项目/ *目录中回显' cd“ $ dir”; git push; cd ..;完成”> update_all; chmod + x update_all

–AndréParamés
2011年4月19日在11:19



git init和bam!哦,是的,然后cp ../the-other-project/.gitignore。在初次提交之前。 am!

–丹·罗森斯塔克
2011年4月19日在20:57

#2 楼

我认为将Subversion用于本地个人项目是过大的,而Git绝对不是。 Git将占用更少的空间(由于SVN的“修订”概念相对于Git的对象快照效率低下),所需的设置更少(git init与一堆svnadmin命令和设置权限等),更易于备份(git clone --bare [或git push origin (如果您使用Github或类似工具),则说明您已经完成了),并且拥有更好的代码管理工具(分支是免费的,并且合并更容易,更干净)。仅仅因为没有其他人可以克隆您的存储库并不意味着任何DVCS的好处都是“过分杀伤”。更大的奖励。

评论


我想我应该使用“强大”而不是“复杂”

–安托
2011年4月18日在18:24

@安托:没关系。我仍然会说基本相同的事情:与SVN相比,Git的高级分支根本没有缺点。

– Greyfade
2011年4月18日在18:27

Git也不会通过跟踪每个子目录中的文件来“污染”您的源代码树。

– WarrenT
2012年9月2日15:22

@WarrenT在svn 1.7及更高版本中不会发生源代码树“污染”。

–pllee
2012年9月2日19:40

在Subversion中创建文件系统存储库是一条命令(svnadmin create,再加上一条用于进行初始签出或导入),无需设置权限等。我并不否认Git通常是一个更好的工具,但是有关Subversion的错误并没有帮助。

–乔什·凯利(Josh Kelley)
13年2月1日于13:29

#3 楼

认为自己永远不会分支自己的代码有点眼光短浅。我已经多次分支自己的代码,尤其是当我尝试一种新方法时,我还不完全相信。您最终将需要该功能。

这来自长期的Subversion用户。整合一种工具确实可以使您的生活更轻松。

评论


是的,我相信这是分支机构的工作重点。这是我阅读Op的问题时的第一个保留意见。如果您不在存储库中进行分支,那么您就在头脑中“分支”,当您具有版本控制权时,这是毫无意义的。

–克里斯
2011年4月18日在19:00

您可以使用subversion进行分支。并合并。有点。实际上,我唯一的尝试是遇到了一个无法再使用的损坏的存储库,并且从备份(已经应用了分支)中恢复并没有帮助,所以我最终失去了所有历史记录,开始新的存储库...但我将此归咎于从1.4开始的过渡。到1.5(我认为-几年前)。实际上,可能是分支和合并。如果您有足够的勇气尝试。如果我早就知道svn dump,那么我当然可以通过一些努力解决该问题。

–Steve314
2011-4-18在19:26



@Chris,我希望有一个可以随时使用的工作版本。当然,您可以使用标签来实现这一点,但是有时候分支很有意义。也不要忘记git / mercurial的其他好处。

–贝琳·洛里奇(Berin Loritsch)
11年4月18日在19:51

#4 楼

如果因“解决方案”造成附带损害,则保留超额杀伤力。用枪杀死苍蝇意味着子弹移到其他地方会造成伤害。这太过分了。使用比必要的功能强大的东西而不会引起问题,这并不过分,如果它可以帮助您简化开发过程,那将是一件好事。它不会造成任何危害,只允许您更新一套软件,而不用更新两组。那么,为什么要麻烦两个系统而不是一个系统呢?

评论


如果系统进入您的控制范围,则可能会过大(是的,用这个定义)。我想知道将git用于个人项目是否是一个好主意。您能否告诉我什么是具体优势?这个答案没有解决。我认为git是一个更强大的系统,对于个人项目来说太强大了。但是,只要它不会妨碍您,就不一定有任何危害。您能否扩大答案范围?

–安托
11年4月18日在18:43

当用于解决方案的工作不成比例时,也会使用过大杀伤力。可以说,如果您已经在本地项目中使用Subversion,那么学习Git所需的精力或任何过大的技能。当然,这也许是发展可转移技能的有用课程。就我个人而言,我仍然在使用颠覆-这让我有点难过,但只留下了些许伤疤。我对学习Git感兴趣,但是每次浏览时,发现的教程都是晦涩难懂的,或者我无法获得适用于Windows的稳定工具,或者还有其他障碍使这一切看起来都过头了。

–Steve314
2011-4-18在19:32



#5 楼

我将Git用于单人项目,我喜欢它。我以前使用的是Subversion,但尚未看到使用Git的缺点。它功能更强大,但不能使简单的事情变得更复杂。使简单的事情变得不必要的复杂/昂贵/缓慢/等。恕我直言,这是称呼过大杀伤力的必要条件。另外,在Github上,我分叉了其他人以前的单人项目,以添加我想要的功能,然后向他们发送拉取请求。如果对我的项目感兴趣的人做同样的事情,我会觉得很酷。

#6 楼

在DVCS之前,我从未在个人项目上使用过源代码控制,因此,想象有人持相反的观点有点奇怪。我的一些原因是:


易于安装和拆卸。例如,上周一位同事给了我一个编程难题,我通过几个小步骤就解决了。我做了一个持续45分钟的git repo来保存我的工作,然后它消失了。我不知道在Subversion中这样的事情有多容易,但我从未听说有人这样做。
断开连接。对我来说,能够离线工作对一个业余项目的好处远胜于一项工作。我不需要在我的家庭防火墙上戳一个洞,也不需要公开托管一个项目。我可以将存储库临时放在拇指驱动器或笔记本电脑上,并且仍然保持同步。
所有东西都放在同一位置。将仓库和工作树放在一起可以使小型项目更容易在操作系统升级之类的情况下进行跟踪。当然,我一直不需要电源,但是在需要时它就在那儿,不使用它就不会消耗任何资源。

#7 楼

有人告诉我,git-bisect真的很不错,它可以根据输入内容来回浏览提交,从而找到引入给定行为的确切提交。您根本无法弄清发生了什么事情。


编辑:此外,当您必须在客户使用的旧版本中进行错误修复时,分支功能非常重要。您必须能够管理“只解决这个小问题,但是我不想要最新版本,因为我现在不想再次对其进行重新测试”。

#8 楼

这取决于您想要对自己的代码进行版本控制的认真程度。例如,如果您要构建的是一个仅具有当前版本(或者只要是真实的版本)的简单库,那么我个人将只使用诸如Dropbox之类的基本备份选项。如果您丢失了所有代码,则可以从网络上恢复代码,如果您确实做一些愚蠢的事情,Dropbox可以提供30天的版本备份。

但是,例如,如果您需要维护Production和Dev分支,那么git绝对是一个很棒的工具-比svn快很多。但是,如果仅将数据存储在本地,请注意硬盘故障的风险。

评论


是的,我将DropBox用于个人项目。版本控制远不及真正的VCS复杂,但对于我在业余时间从事的较小项目来说很好,并且完全不需要任何关注(例如,没有提交,文件只是在处理它们时更新)。

–跳楼
2011年4月19日在16:48

哦,顺便说一句,因为我开发游戏,所以我的项目中往往会有很多二进制文件(图像文件,音频剪辑等),并且大多数版本控制系统实际上仅用于源代码。

–跳楼
2011年4月19日在19:33

Git可以很好地处理二进制文件,而diff则没那么有趣。幸运的是,git的差异并不完全锁定-如果您可以找到自己喜欢的二进制diff工具,则可以很容易地在git中使用它(从命令行)

–克里斯·莫斯基尼(Chris Moschini)
2011年4月21日在20:54

有人告诉我,Git浪费了很多空间版本控制二进制文件,但是我被告知可能不正确。基本上,我被告知,大多数二进制资产(我想不是所有二进制文件,而是游戏中的图像和声音)都必须完全还原为每个版本,因此Git会用本地存储库填充硬盘。

–跳楼
2011年4月21日在21:04

仅当您不打算对二进制文件进行版本控制时,这才是浪费。如果您确实需要对它们进行版本控制,那么版本历史记录就不会浪费。我认为他们在跟踪二进制文件时不小心暗示git膨胀了其版本历史记录-这是不正确的。 git.wiki.kernel.org/index.php/GitSvnComparsion

–克里斯·莫斯基尼(Chris Moschini)
2011年4月21日在21:36

#9 楼

对于任何类型的开发项目,我都会始终使用版本控制系统。大小无关紧要。无论我是在家中使用某种新技术,还是写一些小助手来简化生活,还是在一个庞大且分散的团队中进行专业开发-我总是希望有一个版本控制系统来支持我。 >
当然,在大多数小型个人项目中,您通常不会使用大多数功能,但是设置git存储库(甚至本地的Subversion存储库)没什么大不了的,所以继续吧!而且,在您知道它之前,您将需要知道“该死,文件X的最后一个星期五的内容是什么?”。没有版本控制-祝您好运;-)

所以,无论您使用git还是SVN都没关系-个人而言,我开始将越来越多的东西从SVN迁移到git,事情就是完全使用版本控制-即使是很小的事情。

#10 楼

只是因为没有人提及它:对于个人项目,darcs确实很棒,并且比git少参与简单的版本控制。对于大型项目来说,速度不是那么快,但是Subversion也是如此!

评论


这听起来与您对darcs的了解程度有关。我从没使用过它,但是经常使用git。对我来说,git非常简单明了,但是我敢打赌,如果我要使用darcs,我会挠头。

–山姆
2011年4月19日在9:48

如果您已经掌握了git的疯狂ui,则darcs将是步履蹒跚。

– wlangstroth
2011年4月20日在1:02

您能否解释一下为什么darcs比git更适合小型项目?

– shabunc
2012年8月24日10:42

#11 楼

理解我们所做的是实验,可能是一种强大的思维模式转变。拥有便宜/简单的工具来支持这一点,可以增强您前进的能力,部分原因是它可以增强您在结果不佳时退出任何实验的能力。

许多开发人员说,好吧,我只是复制我的代码。但是这些副本变得难以管理,最终变得混乱。您有多个副本,不记得要复制哪个副本,然后尝试找出何时可以安全删除它们。文件。而且当使用Git进行单独演奏时,变得更加简单。

我不再想知道是否应该在单独的项目中使用它,而是现在我没发现这件事真可惜。 />

评论


对于设计师的观点,请在YouTube的Git上观看Linus(约70分钟)

– WarrenT
2012年9月2日在16:13