Где установить ветку в Mercurial?

Я новичок в 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. Обратите внимание, что оба файла file4 и file5 в каталоге src1 имеют одно и то же имя, что и имена в каталоге src2. Если я переместлю все файлы в одну и ту же директорию, я не смогу отличить какую версию от какой. Вот почему я сохранил одну версию file4 и file5 в каталоге src1 и другую версию file4 и file5 в каталоге scr2. У меня есть учетная запись команды в bitbucket, и я вставил каталог src1 в учетную запись. Таким образом, битбакет содержит все файлы в 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 by

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? Спасибо

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"

Объединение переносит все незапутанные изменения из ветви-источника в ветку-адресат. Если вы хотите внести только некоторые изменения, используйте команду graft, если вы используете Mercurial 2.0 или более позднюю версию, или расширение трансплантата, если в более ранней версии.

Другие вопросы по тегам