我最初的问题是我有一个编写各种脚本的目录.它们中的每一个都独立于其他人,通常是一个文件长.我想对它们应用一些版本控制,但我有以下问题/要求:
可能吗?
我更喜欢在一些主流的分布式VCS中使用它(使用Mercurial的解决方案会更好,但我不是固定的).
编辑:解决方案必须是免费的(至少"在啤酒中")和跨平台(至少是Win32和Linux).
这些要求对我来说似乎很"特别",所以这里有一个与他们相同的解决方案^^
您可以在同一目录中使用两个完全不同的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)
更新(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)
主要缺点是它需要我花一些时间来编写该工具。或者有人知道这样的现成的吗?如果您这样做,请发布完整的答案(而不是评论),我非常愿意接受。