1

我目前有一个项目托管在我使用 sourcetree 管理的私有 Git 存储库上。最近我决定和一群朋友合作这个项目。然而,他们更喜欢 Mercurial 和 SVN 而不是 Git,我更愿意为我的项目创建单独的 Mercurial 和 SVN 存储库,以便他们在维护我自己的 Git 存储库的同时进行协作。我想知道是否可以通过 Sourcetree 或任何其他方法执行以下操作:

  1. 我的工作系统上有一个项目文件夹,可以同时将我的项目跟踪到所有三个 repo (Git /Mercurial / SVN) 上?

  2. 如果 1. 是可能的,那么我是否可以选择性地从任一版本控制系统中提取更改并选择性地将更改推送到它们?

我在 Mac 上使用 Sourcetree。我遇到了一个用户的文章,他为 github 和 bitbucket 上的单独存储库执行此操作,但我不记得要在此处共享的链接。我希望找到一种好方法来简化代码管理。如果这样的问题不属于这里,请原谅我,模组可能会关闭它。任何帮助表示赞赏:)

4

2 回答 2

1

我强烈建议不要在单个工作目录中混合使用 2 或 3 个不同的 VCS。为不同的引擎保持透明的统一性只是额外的头痛。

为您提供的免费工作目录(全部 - 以 Git 为中心)是更易于管理且不那么混乱的解决方案:

  • 只需为每个“外国”存储库添加一个额外的远程 - “Mercurial-source”和“SVN-source”;
  • 拉“其他”回购,推“自己”

SVN-link 可以由 git-svn 支持,Mercurial-link(来自 Git 端)由“Mercurial bridge”支持

于 2013-01-24T08:22:18.313 回答
0

实际上,通过直接使用 git 存储库,hg 可以通过 hg-git 扩展名很好地访问它。但是如果你的意图是维护两个存储库,我认为这也是可行的。

事实上,在一个文件夹中,它可以有 .hg 文件夹用于 mercurial,.git 文件夹用于 git,如果你是这个意思的话。其实 hg 和 git 是区分工作目录和仓库的,所以这个文件夹可以存放不同的仓库。

对于第二个问题,我认为你需要在 hg 和 git 中设置一些钩子,并让它们通过 hg 的 hg-git 扩展进行通信,当在任何系统中发生推送时。据我所知,这个扩展运行良好。

但是对于 SVN,情况就不同了。虽然 hg 和 git 都有 svn 扩展(hgsubversion 和 git-svn;这里的扩展是一个通用概念,而不是特定于类似 hg 的扩展),但 DVCS 系统将很容易分支,这会导致映射到 svn 有点复杂。

因此,我认为通过 hg-git 扩展和钩子将 hg 和 git 存储库放在一个文件夹中是可行的,而对 svn 不太确定。

于 2013-01-24T02:08:53.747 回答