0

想象一下这个世界上的两个物理位置:

  1. 使用主 svn 存储库 - 但没有互联网。
  2. 主存储库文件的副本;但目前不在任何 VCS 中。

现在作为程序员,我的工作是在这两个地方工作(在同一个功能上),主要是在第二个站点,每周在第一个站点工作一到两次。

为了在这两个位置之间同步文件,我将更改的文件刻录到 CD,然后转到另一个位置并仔细合并每个文件。此外,不确定它是否相关,但还有其他程序员与我一起从事该项目。有些将站点 1 作为主要办公室,有些将站点 2 作为主要办公室。

我无法改变站点 1 中的主存储库是 svn 的事实,但这似乎是一个分布式环境,那么如何使用 git 使这些站点之间的文件移动和合并更容易?

4

3 回答 3

1

Subversion主要与存储库一起工作。Subversion 旨在短期内无需存储库连接即可工作,但最终,您需要存储库。否则,您无法提交更改。这可能在一两天内还不错,但如果您谈论的是数周或数月,这将是一个主要问题。

一种解决方案是迁移到分布式存储库模型。使用 git-svn 将允许您从 Subversion 存储库中签出,并将您的更改送回该存储库。你的合并问题(你的工作和远程之间几周没有同步),但至少你可以在你的工作上使用版本控制。

是否可以使用主 svn 存储库获取该站点 - 但没有互联网可以转移到 Git?大多数人对 Git 不了解的是,您不一定只有一个中央存储库,但您可以拥有多个存储库,您可以在多个存储库之间推送和拉取更改。例如,您可以使用电子邮件将更改推送到 Git 存储库。这样,您的代码更改可以在您仍然不在现场时交付。或者,您可以将您的代码更改推送到同事的 Git 存储库,该同事可以将您的更改推送到主存储库。

Git 比 Subversion 稍微复杂一些(毕竟,在使用 Git 时,您至少需要使用一个额外的存储库),但在这种情况下,使用分布式版本控制系统可能会让每个人的生活变得更轻松。

于 2013-06-11T14:31:41.727 回答
1

您可以考虑使用 svn 本身来执行此操作。

  1. 在站点 2 中创建一个新的 SVN 存储库,其中包含从站点 1 获取的转储。
  2. 提交对站点 2 存储库的更改
  3. 从 CD/便携式 HDD 上的 repo 2 转储(导出,而不是结帐)到站点 1
  4. 在站点 1,结帐
  5. 将文件从 repo2 合并到 repo1(您可以使用好的工具自动完成大部分操作)
  6. 签到站点 1
  7. 从站点 1 获取一个新的转储并在​​站点 2 上创建一个新的存储库(无需合并回站点 1)。

即使你使用git,如果有冲突也需要人工干预。如果您使用一个好的比较合并工具,合并不是那么耗时。您可以编写一个脚本来自动执行所有步骤。

于 2013-06-11T07:27:55.847 回答
0

您可以在您的机器上使用 git,然后使用git-svn将其与 SVN 存储库同步。我不确定这是否会使您的工作流程变得更轻松……我的意思是,如果您喜欢 git,那么您将能够在大多数时间使用 git 进行开发,但无论如何同步回 SVN 都会很痛苦。

于 2013-06-10T20:29:46.350 回答