3

我是 Mercurial 的新手,想就我团队项目的情况在哪里设置分支寻求一些有经验的建议。该项目将由其他 4 名成员共享。

我在本地机器上的目录 /home/Cassie/localRepository/src1 有一个存储库。我的机器 /home/Cassie/localRepository/src2 上还有另一个目录,其中包含大多数常见文件作为 src1 目录,但也有一些不同的文件。例如,在 /home/Cassie/localRepository/src1,有

file1 file2 file3 file4 file5

在 /home/Cassie/localRepository/src2,有

file1 file2 file3 file4(version2) file5(version 2)

我想让它们成为两个不同的分支并分别处理它们。但是,我仍在继续研究 file1、file2 和 fil3,并希望这两个分支都能随着时间的推移获得更新的 files1、file2、file3。请注意,src1 目录中的 file4 和 file5 与 src2 目录中的文件名称相同。如果我将每个文件都移动到同一目录中,则无法区分哪个版本。这就是为什么我将一个版本的 file4 和 file5 保存在 src1 目录中,并将另一个版本的 file4 和 file5 保存在 scr2 目录中。我在 bitbucket 有一个团队帐户,并将 src1 目录推送到该帐户。因此,bitbucket 将 src1 中的所有文件作为中央存储库。现在,我遇到了在哪里为 src2 设置分支并实现我的目标的问题。

顺便说一句,我的本地机器是 Linux RedHat 工作站 6.2,有 mercurial 1.7 和 tortoisehg 1.5。

我尝试了一些实验:

(1) 我创建了另一个目录 src 作为我的本地存储库。将 file1,2,3 复制到其中,添加并提交它们。

(2) 然后,我将 src1 目录中的 file4 复制到 src 并使其成为一个名为 src1-Branch 的分支,复制并将 file4.txt 添加到 src1-branch 并提交。

(3) 创建了另一个名为 src2-branch 的分支,通过切换到 src2-branch

hg update src2-branch

,将file4(version2)从src2目录复制到当前目录

 cp ../src2/file4.txt .

,添加了file4并尝试提交file4.txt。但是,我遇到了一条错误消息

waiting for lock on working directory of /home/Cassie/src held by 'Cassie-PC:20994'

然后我在网上搜索,人们建议删除 .hg/wlock。有效 !

任何人都知道为什么问题首先发生?当我将 file4.txt 从 src2 添加到 src2-branch 时,我做错了吗?谢谢

4

1 回答 1

1

我认为你可以使用 Mercurial 分支完成你想要的。您可以将对文件的更改单独保存在各个分支中,也可以选择将这些更改合并到其他分支中。在您的 src1 存储库中,创建一个 src2 分支:

 > hg branch src2

然后,您可以删除文件 4 和 5 并添加文件 6 和 7:

> hg remove file4 file5
> cp ..\src2\file6 .
> cp ..\src2\file7 .
> hg add file6 file7
> hg commit -m "Removing file4 and file5; adding file6 and file7."

然后您使用 Mercurial 的合并命令将更改从一个分支带入另一个分支。从您最初的问题来看,听起来您想将默认(src1)分支的更改带入 src2 分支。在这种情况下,你会:

> hg up src2
> hg merge default
> hg commit -m "Merging default -> src2"

合并将所有未合并的更改从源分支带入目标分支。如果您只想进行一些更改,如果您使用 Mercurial 2.0 或更高版本,请使用graft 命令,如果使用早期版本,请使用移植扩展。

于 2012-06-09T22:40:43.263 回答