2014-01-16 16 views
2

我想将目录C:\WorkDir置于Mercurial版本控制之下,但将存储库放置在其他位置,而不是C:\WorkDir\.hg或许是D:\Repositories\WorkDir.hg。 Mercurial有可能吗?我可以从工作目录中分离出`.hg`吗?

+0

为什么你想这样做吗? –

+0

也许我的'C:'驱动器没有足够的空间。也许'D:'驱动器计划进行定期备份。 – Fenikso

回答

3

This answer on the Mercurial mailing list by Martin Geisler大约是说得很清楚:

不能移动.hg文件夹在您的工作文件 驻留之外。这是由定义:“工作副本”父文件夹 的.hg文件夹的目录。所以,如果你想版本的文件中

C:\的Inetpub \ laravel \应用

您必须

C:\的Inetpub \ laravel \程序\ .hg

4

如果您想要避免使用充满存储库数据的“真实”工作副本的驱动器,可以使用共享扩展:https://www.mercurial-scm.org/wiki/ShareExtension

E.g.如果你想版本控制C:\WorkingDir,但希望我们的大仓库的数据驻留在D:\Repositories\WorkDir,只要做到以下几点:

  1. cd D:\Repositories
  2. hg init WorkDir
  3. cd C:\
  4. hg share D:\Repositories\WorkDir WorkingDir

你在C:上仍然有.hg目录,但它仍然很小(大约1MB),而D:的回购将会随着时间而增长。

+0

谢谢。我也可以尝试使用它。不过,我有点害怕“一般注意事项”部分,因为我不确定这些是否可以在将来适用于我。 – Fenikso

+0

好吧,注意事项只有逻辑:您的共享工作目录将立即影响“真实”存储库。因此,如果您将“真实”存储库与工作副本一起使用,则共享工作目录中的任何历史重写都可能会使存储库的工作目录无效。如果你只是像上面的例子中描述的那样使用它,你会没事的。我几乎每天都在使用共享存储库,而且我从来没有因此丢失任何东西。请记住,它不是克隆,而是分享! – Face

1

您是否尝试过创建Junction

比方说,你的回购协议c:\test\.hg但你想要把.hg目录c:\shadow

mkdir c:\shadow 
mv c:\test\.hg c:\shadow\.hg 
mklink /j c:\test\.hg c:\shadow\.hg 
相关问题