遵循Subversion代码库主干的最佳实践:Git(镜像),Git-Svn,Subversion?

3

我希望能够在Mac OS X Leopard 10.5.5机器上检出并根据需要更新Django Subversion trunk。我只对在我的Mac上有最新的Django代码感兴趣,不想为Django项目贡献补丁,也不需要Django trunk的Subversion历史记录。

我计划将Git作为所有个人项目的DVCS/SCM。


保持我的Mac与最新的Django trunk同步的最佳实践是什么?为什么选择这种方法?

我对Git还不熟悉,所以了解你选择的选项的原因将非常有帮助。

  1. 在我的Mac上使用安装的Subversion 1.4.4:svn co http://code.djangoproject.com/svn/django/trunk/。基本上使用Subversion获取Subversion repos,使用Git进行个人项目。

  2. 使用Git SVN获取Django Subversion repo。如何为Git新手提供说明?

  3. 使用Git获取Django repo的Git镜像。我有点担心这个镜像将来可能会消失,但如果这是最佳选择,我愿意使用它。

4个回答

11
如果你不会对Django代码进行更改,则没有理由将其导入Git中。只需使用选项1。
使用git-svn(通过自己运行它或克隆别人的存储库)对于想要对使用Subversion的项目进行本地修改的人很有用(无论是否将这些修改发送回项目中)。但是,如果您没有进行任何本地修改,那么这只是不必要的复杂性。

2

如果你在所有项目中都使用Git,并且对它比较熟悉,我建议使用Git镜像,因为它似乎比较及时更新。使用Git也比使用Subversion更快。如果镜像不可用或过期,您可以随时使用 svn co / svn up 获取当前源代码。

但是,既然您已经安装了Subversion,您也可以直接使用它……这并没有太大区别,更多地是个人喜好的问题。

设置和同步Git-svn有点繁琐-您必须先使用 git svn fetch 获取Subversion更新,然后再使用 git svn rebase 将更改应用于Git存储库。它还会使用更多的磁盘空间。这样存在一些错误风险,我只建议在实际想要对源代码进行开发时才使用git-svn。如果你感到有冒险精神,并想尝试一下,请查看这个教程——我觉得它很有用,可以让你开始使用git-svn。


同意,我更喜欢Git,原因如下:1)速度快;2)强大的查询和可视化功能(包括gitk和其他更高级的附加功能);3)一致性——如果所有其他项目都在Git中,则使用Git更为方便;4)在大多数情况下占用更少的磁盘空间;5)即使您目前不打算做出贡献,也可以轻松地在本地尝试更改。哦,现在可能要添加我的答案 :) - inger

1
迟到总比没有好...也许...我不同意当前获胜答案。我会选择:
  1. 使用Git获取Django repo的Git镜像
关于反对它的论点:那些熟悉Git(或想要熟悉Git)的人,不应该认为这是“毫无意义的复杂性”。注意:对于git-svn情况,这个论点可能对某些人(不包括我)有效。
一些支持它的理由:
  • 速度更快

  • 强大的查询(日志)和可视化(gitk甚至更高级的版本)

  • 在大多数情况下占用更少的磁盘空间

  • 二分法 - 例如,尝试隔离回归,帮助改进错误报告

  • 一致性 - 如果所有其他项目都在Git中

  • 即使您还没有计划贡献,您也可以更轻松地尝试本地更改

  • 如果您改变主意,仍然可以更接近贡献

即使那个镜像消失了,你仍然可以切换到另一个镜像,无需再次克隆。

顺便说一下,当前的镜像位于https://github.com/django/django,据说是官方的。


你在指向 Github 上 Django 仓库的链接中缺少了结尾的 'O'。我无法进行单个字母的编辑。 - tatlar

0

我同意@cjm的观点。如果你只想要Django源代码的副本,可以使用普通的Subversion。

我的经验是,git-svn最适合那些更喜欢和熟悉Git的人,他们需要跟踪Subversion存储库,而对于那些了解Subversion但是想要比Subversion更好的东西的git新手来说,它并不是很有用。由于Subversion具有较差的合并跟踪功能,git-svn存在一些限制,除非你有一些实质性的git经验,否则这些限制有时会让你感到困扰。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接