Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何使用Mercurial(hg)拥有多个工作区?_Mercurial_Workspace - Fatal编程技术网

我如何使用Mercurial(hg)拥有多个工作区?

我如何使用Mercurial(hg)拥有多个工作区?,mercurial,workspace,Mercurial,Workspace,我只是想说服Mercurial,所以这可能是个愚蠢的问题 打开我希望在我的机器上编译多个版本的程序,例如,我可能需要在调试器中单步执行“工作版本”和“bracken”版本,直到找到不同的行为方式 我还喜欢在完成检查后签出到一个干净的工作区,这样我就可以检查(通过构建)我没有忘记添加文件 这在大多数源代码控制系统中很容易做到,但Mercurial似乎不支持这一点。我错过了什么? hg克隆URL dir1 hg克隆URL dir2 。。。 黑客调试修复程序] hg提交 汞推力 cd 德尔迪尔*

我只是想说服Mercurial,所以这可能是个愚蠢的问题

打开我希望在我的机器上编译多个版本的程序,例如,我可能需要在调试器中单步执行“工作版本”和“bracken”版本,直到找到不同的行为方式

我还喜欢在完成检查后签出到一个干净的工作区,这样我就可以检查(通过构建)我没有忘记添加文件

这在大多数源代码控制系统中很容易做到,但Mercurial似乎不支持这一点。我错过了什么?

  • hg克隆URL dir1
  • hg克隆URL dir2
。。。 黑客调试修复程序]

  • hg提交
  • 汞推力
  • cd
  • 德尔迪尔*
      • hg克隆URL dir1
      • hg克隆URL dir2
      。。。 黑客调试修复程序]

      • hg提交
      • 汞推力
      • cd
      • 德尔迪尔*

      Mercurial比大多数版本控制系统更好地支持此型号

      诀窍在于,您的机器上可以有多个相同代码的存储库。每个存储库都支持一个工作目录,您将在其中保存代码

      您可以在存储库之间移动更改,也可以将更改从这些存储库移动到其他计算机上的存储库,如中央回购


      Mercurial用户可能会将您的语句“我也希望在完成检查后签出到干净的工作区…”理解为“我希望在提交检查过的代码后克隆存储库的新副本”。这很容易做到。Mercurial比大多数版本控制系统更好地支持此模型

      诀窍在于,您的机器上可以有多个相同代码的存储库。每个存储库都支持一个工作目录,您将在其中保存代码

      您可以在存储库之间移动更改,也可以将更改从这些存储库移动到其他计算机上的存储库,如中央回购

      Mercurial用户可能会将您的声明“我也希望在完成检查后签出到干净的工作区…”理解为“我希望在提交检查过的代码后克隆存储库的新副本”。这很容易做到。

      另一个选项是,与Mercurial 1.3或更高版本一起分发

      花药选项为,以Mercurial 1.3或更高版本分布


      这当然是可能的,因为intrest让你觉得不可能?当然是可能的,因为intrest让你觉得不可能?磁盘空间越来越便宜,但是随着我们使用SSD,存储库的大量副本的空间可能仍然是个问题。(+1用于解释这一点)@IanRingrose实际上空间不是问题,因为如果从一个存储库克隆到另一个存储库,Mercurial将硬链接文件。因此,存储库的额外副本只消耗很少的额外磁盘空间。在Lazy Badger的示例中,对第二个克隆使用
      hg clone dir1 dir2
      ,以获得此行为。另外还有一个重新链接扩展,用于稍后创建/更新这些硬链接。顺便说一句,存储库通常占签出总大小的50%左右(另一半由工作副本使用)。因此,即使Mercurial不创建这些硬链接,如果您有足够的空间容纳许多工作副本,它们的存储库也不会将磁盘大小需求增加一个数量级。作为比较,svn创建的那些.svn目录也占了大约1/3的大小(此处存储库中747MB的目录中有237MB)。@LaurensHolst,Mercurial是否在Windows 7上使用NTFS文件系统执行此操作,如果是,这就是我所缺少的细节。@Ian Ringrose-当然执行了。这在过去几年中是一个变化的领域,但是当前稳定版本的Hg使用NTFS硬链接(如果可用)。我刚刚验证了我的OrtoiseHG 2.1.2(Hg 1.9.1…)默认情况下会这样做。磁盘空间越来越便宜,但是由于我们使用SSD,存储库的大量副本的空间可能仍然是一个问题。(+1用于解释这一点)@IanRingrose实际上空间不是问题,因为如果从一个存储库克隆到另一个存储库,Mercurial将硬链接文件。因此,存储库的额外副本只消耗很少的额外磁盘空间。在Lazy Badger的示例中,对第二个克隆使用
      hg clone dir1 dir2
      ,以获得此行为。另外还有一个重新链接扩展,用于稍后创建/更新这些硬链接。顺便说一句,存储库通常占签出总大小的50%左右(另一半由工作副本使用)。因此,即使Mercurial不创建这些硬链接,如果您有足够的空间容纳许多工作副本,它们的存储库也不会将磁盘大小需求增加一个数量级。作为比较,svn创建的那些.svn目录也占了大约1/3的大小(此处存储库中747MB的目录中有237MB)。@LaurensHolst,Mercurial是否在Windows 7上使用NTFS文件系统执行此操作,如果是,这就是我所缺少的细节。@Ian Ringrose-当然执行了。这在过去几年中是一个变化的领域,但是当前稳定版本的Hg使用NTFS硬链接(如果可用)。我刚刚验证了我的OrtoiseHG2.1.2(HG1.9.1…)默认执行此操作。