用于2个非共处开发人员的git工作流程是什么?

时间:2009-02-28 21:46:20

标签: git workflow

我已经签了一份合同来写一个程序的一部分。写另一部分的人在另一个城市。我想找到一种方便的来回发送更改的方法。出于其他原因,我想学习使用git作为分布式VCS和电子邮件来回更改。 (我之前使用SCCS,RCS和PVCS,总是锁定。我想推动自己学习如何更好地使用分支和合并,而不是依赖于中央服务器。)
我们需要做以下两个任务(相当标准的清单):
(a)我们每个人都为错误修复和需要更改两个部分的新功能做出贡献 (b)为客户编制和打包二进制文件 (我们还需要单独处理不依赖于另一个的功能,但我认为任何适用于任务(a)的功能也适用于此。)

背景:另一个人以前从未使用过VCS;他对这个想法有点抵制。他甚至不知道他们并不是所有人都使用锁定结账。我需要了解我们所做的一切,我可以帮助他完成粗糙的事情而不会让他感到沮丧。他将源存储在服务器上也非常不舒服,这是更喜欢通过电子邮件发送更改的另一个原因。我们可以轻松加密它们。

其他可能相关的背景:我们在Windows上使用Delphi作为我们的开发环境。我们极不可能添加其他开发人员。如果是这样,我们每年只需要多次打包客户版本。客户数量可能永远不会超过十个。

问题:
1)我应该使用这个项目来学习分布式开发的技术吗?或者这太过分了,我应该做一些更简单的事情?我不介意花一些额外的时间学习,但不会超过几周。

2)对问题1假设“是”,我们应该对上述每项任务使用什么工作流程?

3)哪些Windows GUI程序将执行所有必需的任务? (我对命令行很满意;他不是。)

谢谢你的帮助。

我写了一篇关于“gitting started”的非常详细的教程,展示了我到目前为止学习使用git的内容。如果你想读它到目前为止它在http://xorandor.com/GittingStarted。我试着把它写给一个git新手,他对一般的VCS知之甚少但不是很多。我计划在我了解更多内容时添加。

7 个答案:

答案 0 :(得分:4)

你应该用这个项目来学习git吗?我会说是的。

除了inherent benefits of source control之外,我使用git的优点是在每个开发人员系统上都有完整的存储库副本。

我会在每个拥有存储库的情况下做的一件事就是让你们每个人每天都与中央服务器同步。

工作流程如下:

  1. 您可以尽可能多地更改本地git存储库。
  2. 以固定的间隔(每天一次,在大错误修复或功能等之后)将您的存储库推送到位于您的Web主机或另一个git托管提供商(aka,GitHub)上的中央存储库。
  3. 始终从中央存储库而不是每个其他存储库中提取更改。您可以将中央存储库视为您的发布回购,这样可以避免混淆哪个回购(您或他的)是最新的。
  4. 我知道分布式版本控制系统的重点是没有中央存储库,但我真的很喜欢在异地提供额外的副本。如果有的话,它会为您提供另一个存储库副本以供备份。

    就Windows上的git而言,我会查看illustrated guide to running git on windows。内置的git-gui有很多不足之处,但功能强大且实用。

    此外,由于您的合作伙伴是源代码控制的新手,我建议Eric Sink出色的Source Control HOWTO。它为您提供了很多有关源代码控制的重要信息。

答案 1 :(得分:4)

  

另一个人从未使用过VCS   之前;他有点抵抗   想法。

我一直参与培训和支持用户,这些用户被迫从源安全切换到颠覆。出现了惊人的用户阻力。现在已经有一年多的时间了,当“颠覆我的东西”时,我仍然经常被要求解决问题(当然,情况并非如此)。

知道了这一点,我会非常犹豫是否会尝试帮助某些人从无VCS切换到git(这可能不是用户最友好的VCS)。特别是如果他们讨厌VCS的想法。如果你不能在他们的办公桌帮助他们的话,那就完全如此。

所以考虑一下:某些原因只是失败的原因。除非你打算长时间与这个人一起工作,否则你可能最好只为自己设置一个存储库。您可以让他将更改的文件发送给您,反之亦然。至少git可以让您轻松查看自上一个集成点以来哪些文件发生了更改。

答案 2 :(得分:1)

根据我的经验,Git在Windows上得不到很好的支持。

对于类似的,但恕我直言更加用户友好的DVCS,请参阅Mercurial(a.k.a。Hg)。它有一个Tortoise客户端和一个相当友好的命令行工具。

还有用于Mercurial的Visual Studio和Eclipse插件(我也认为NetBeans)。它们工作得相当好,是其他工具的一个很好的附加功能。 (自动添加/删除/重命名Stuff get,基本同步任务(推/拉)工作正常。)

答案 3 :(得分:1)

看起来git内置了emailed patches functionality。我虽然没有用它,所以我不能说它的实用性。

答案 4 :(得分:0)

我在git中相当新,但也许最快的开始方式是:
使用git,您可以在计算机上创建两个存储库 一个用于你的工作,第二个用于你发给你的工作 有nice tutorial to start(如尼克所述)
如果你在TortoiseGit之前使用windows / subversion,这个工具很好用

我的观点:在你感觉git非常好的时候不要开始教他,在你的电脑里做两个回购/分支。

答案 5 :(得分:0)

我只需在每个上配置autosetuprebase,然后从一个非常简单的设置开始。

接受你得到的冲突 - 那些本来就会丢失的变化。

答案 6 :(得分:0)

由于其他开发人员不熟悉版本控制概念,我建议慢慢开始。

我建议的工作流程包含一个可以“git clone”的存储库。 告诉他如何从中获取变化并让他将他的更改邮寄给你。告诉他git如何邮寄变更集。通过这种方式,您将成为那些不得不担心编辑冲突的人,这些冲突往往是以前从未使用过版本控制系统的人的混淆的主要原因。