Помещение домашней директории под контроль источника (hg)

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

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

Ответ 1

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

~$ 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] 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/

Ответ 2

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

Попробуйте следующее:

hg clone proj1 proj3
mv proj3/.hg proj2
rmdir proj3
cd proj2
hg update -C -r tip

Ответ 3

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