一个目录(同一级别)中的多个存储库 - 是否可能?

aka*_*vel 7 version-control

我最初的问题是我有一个编写各种脚本的目录.它们中的每一个都独立于其他人,通常是一个文件长.我想对它们应用一些版本控制,但我有以下问题/要求:

  1. 不想每个小脚本存储在一个单独的目录中!
  2. 不想将它们全部存储在一个存储库 OTOH中,因为它们完全不相关,并且:
    • 其中一些可能会后来增长到更多的文件(然后他们将需要一个单独的目录),
    • 我有时想将其中一个复制到另一台机器上(我想克隆整个仓库).
  3. 从(分布式)版本控制机制中受益 - 至少:
    • "无限"的修订数量,
    • 能够在不同的计算机上克隆存储库,
    • 能够进行"原子"多文件提交.

可能吗?
我更喜欢在一些主流的分布式VCS中使用它(使用Mercurial的解决方案会更好,但我不是固定的).

编辑:解决方案必须是免费的(至少"在啤酒中")和跨平台(至少是Win32和Linux).

相关,但没有帮助:

Ste*_*n B 5

这些要求对我来说似乎很"特别",所以这里有一个与他们相同的解决方案^^

您可以在同一目录中使用两个完全不同的VCS.即使是SVN的两个"实例"也可能有效:SVN将其元数据存储在一个被调用的目录中.SVN,并且(由于历史原因有关ASP)使用该选项_SVN.目录列表应如下所示

.SVN    // Metadata for rep1
_SVN    // Metadata for rep2
script1 // in rep1
script2 // in rep2
...
Run Code Online (Sandbox Code Playgroud)

当然,您需要隐藏或忽略每个VCS中的外部脚本或文件夹...

补充:这只占一个文件夹中的两个脚本,每个脚本需要一个额外的VCS,所以如果你甚至考虑这个路径并需要更多的存储库,重命名每个Metadir并使用脚本在更新之前将其重命名:

MOVE .SVN-script1 .SVN
svn update
MOVE .SVN .SVN-script1
Run Code Online (Sandbox Code Playgroud)


aka*_*vel 0

更新(2016):显然,一个名叫 Cosmin Apreutesei 的人创建了一个名为multigit的工具,它似乎实现了我在这个问题中所希望的!如果你读过它,非常感谢 Cosmin!我今年开始使用你的工具,发现它很棒


我开始考虑在 Mercurial/git/... 上进行某种覆盖,这将保留几个“禁用”存储库元目录,比方说:

.hg1/
.hg2/
.hg3/
Run Code Online (Sandbox Code Playgroud)

等等,然后会找到链接到 的hg commit FILENAME特定项,然后会暂时:.hgNFILENAME

mv .hgN .hg
hg commit FILENAME
mv .hg .hgN
Run Code Online (Sandbox Code Playgroud)

主要缺点是它需要我花一些时间来编写该工具。或者有人知道这样的现成的吗?如果您这样做,请发布完整的答案(而不是评论),我非常愿意接受。