linux - 在哪里设置 mercurial 分支?

标签 linux mercurial repository branch remote-branch

我是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 files2 files3。请注意,src1 目录中的 file4 和 file5 与 src2 目录中的文件共享相同的名称。如果我将所有文件移动到同一目录中,将无法区分哪个版本。这就是为什么我将一个版本的 file4 和 file5 保存在 src1 目录中,并将另一个版本的 file4 和 file5 保存在 scr2 目录中。我在 bitbucket 有一个团队帐户,并将 src1 目录推送到该帐户。因此,bitbucket 将 src1 中的所有文件作为中央存储库。现在,我遇到了在哪里为 src2 设置分支并实现我的目标的问题。

顺便说一句,我的本地机器是 Linux RedHat workstation 6.2 并且有 mercurial 1.7 和 tortoisehg 1.5。

我做了一些实验:

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

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

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

切换到src2-branch
hg update src2-branch

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

 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 时,我做错了什么吗?谢谢

最佳答案

我认为您可以使用 Mercurial 分支完成您想要的事情。您可以将对文件的更改跨分支分开,并可选择将这些更改 merge 到其他分支中。在您的 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 的 merge 命令将更改从一个分支引入另一个分支。从您最初的问题来看,听起来您想将默认 (src1) 分支中的更改带到 src2 分支中。在那种情况下,你会:

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

merge 将所有未 merge 的更改从源分支带到目标分支。如果您只想进行一些 更改,请使用 graft command如果您使用的是 Mercurial 2.0 或更高版本,或者 transplant extension如果是早期版本。

关于linux - 在哪里设置 mercurial 分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10954235/

相关文章:

linux - 通过 FTP 传输目录,但仅传输图像和视频

windows - 从 Mercurial 迁移后,Git 在 Windows 11 上无法正确识别带变音符号的文件

mercurial - Mercurial : merging a single changeset and not the whole tree

git - 无法通过 http 克隆 git repos;未找到信息/引用

linux - 如何在 Linux 中使用 vi 命令查看整个文件

java - Linux PC 和 Android 之间的 Wifi 文件传输

linux - 如何在 Linux 中使用 grep 获取子字符串?

Eclipse project.properties 反斜杠路径被认为是有害的

c# - DDD : Should Persistence Logic belong to Infrastructure Layer?

ssl - 客户端 : While using tortoiseSVN my access to the server is forbidden, 但我在使用浏览器时确实可以访问