Помещение домашнего каталога под контроль исходного кода (hg) - PullRequest
11 голосов
/ 04 февраля 2011

Некоторое время у меня был только мой код под контролем исходного кода, но я решил, что было бы здорово поместить такие вещи, как мои вещи, в мою папку .vim, среди прочего, в репозиторий.(Я, очевидно, не собираюсь хранить все в моем репо, только различные конфигурационные файлы, мой каталог src и, возможно, также несколько других вещей)

Я смог настроить репо нормально, затем нажатьэто к моему серверу, где я могу получить к нему доступ с других моих компьютеров, но я не могу клонировать его на другие мои компьютеры.Когда я пытаюсь клонировать его, он терпит неудачу, потому что домашний каталог не пуст.Есть ли способ сделать то, что я хочу здесь?

Ответы [ 3 ]

8 голосов
/ 04 февраля 2011

Поскольку файлы с версиями между моими компьютерами одинаковы, я сделал следующее:

~$ hg clone ssh://myserver/hg/dotfiles mydotfiles
~$ mv mydotfiles/.hg .
~$ rm -rf mydotfiles

и все, теперь ваша домашняя папка находится под контролем версий, но, конечно, если ваши точечные файлы не совпадают на разных компьютерах, вам придется с этим что-то делать.

Поскольку я хочу создавать версии только для некоторых файлов, а не для всего, что находится в моей домашней папке, у меня есть это простое правило в ~/.hgignore

# This .hgignore is for the dotfiles repository only,
# the rest of my HG repositories use the file
# .hgignore_global as referenced by [ui]'s ignore setting.

syntax:glob
*

Таким образом, я не получаю океан файлов, когда выполняю hg status, и вижу только те файлы, которые у меня есть под контролем версий, которые были изменены.

Но так как я хочу видеть неверсионные файлы при работе в другом репозитории hg, у меня есть это в моем ~/.hgrc файле

[ui]
ignore=/home/gajon/.hgignore_global

И ~/.hgignore_global содержит несколько фильтров для обычных переходных файлов:

syntax: glob
*.pyc
*~
.*.swp
.svn*
*.svn*
*.fasl

syntax: regexp
^\.pc/
1 голос
/ 04 февраля 2011

Предположим, у вас есть proj1 и proj2 . proj1 - это ртутное хранилище, которое вы хотите клонировать в proj2 , но proj2 уже содержит файлы.

Попробуйте это:

hg clone proj1 proj3
mv proj3/.hg proj2
rmdir proj3
cd proj2
hg update -C -r tip
0 голосов
/ 04 февраля 2011

В других каталогах, которые уже существуют, вы можете hg init, hg add, что вы хотите, hg commit, hg pull из центрального репо и иметь дело с полученным слиянием.

...