Ртутный странный вопрос hg init - PullRequest
1 голос
/ 10 января 2011

очень новый в Mercurial. Я заметил, что мой hg init не работает. позвольте мне объяснить это:

когда я даю эту команду hg clone https://www.mercurial -scm.org / repo / hello my-hello, папка my_hello создается со всеми (2) файлами. затем я удаляю папку .hg из my_hello. затем я инициализирую эту папку с помощью hg init. инициализируется.

Но после инициализации, когда я иду клонировать папку с помощью hg clone my_hello new_my_hello, он просто создает папку .hg в папке new_my_hello, а не другие файлы, которые он должен.

и при всех попытках у меня возникает эта проблема. пожалуйста, помогите.

Я использую Windows 7 64 бит. Мой Mercurial тоже 64 битный.

Ответы [ 2 ]

4 голосов
/ 10 января 2011

Краткий ответ: неотслеживаемые файлы не включаются в клон.

Если вы сначала удалите каталог метаданных .hg и повторно инициализируете новый, он больше не будет отслеживать файлы;по умолчанию файлы не добавляются при инициализации.Поэтому, когда вы клонируете его, вы получаете клон пустого хранилища.Вот так:

$ hg clone https://www.mercurial-scm.org/repo/hello my-hello
requesting all changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 2 files
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd my-hello
$ ls
Makefile  hello.c
$ hg st --all
C Makefile
C hello.c

Выше приведена совершенно нормальная копия репо без модифицированных файлов.

$ rm -rf .hg
$ hg st --all
abort: There is no Mercurial repository here (.hg not found)!

Теперь репо больше не существует.

$ hg init
$ hg st --all
? Makefile
? hello.c

Теперь есть один, но он больше не отслеживает файлы, следовательно, "?".

$ hg clone . ../new-my-hello
updating to branch default
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd ../new-my-hello
$ hg st --all
$ ls

Клон не содержит неотслеживаемых файлов, поэтому два "? -Файла" из "my-привет "не клонированы.

3 голосов
/ 10 января 2011

Вы создаете хранилище, запустив hg init, что вы уже сделали.Однако вы еще не начали отслеживать какие-либо файлы.Для этого вы должны явно указать hg, какие файлы отслеживать с hg add file1 file2 ....Вы также можете добавить все файлы, позвонив по номеру hg addremove.После этого вам нужно добавить эти файлы в репо с помощью hg commit.

Как только вы сделаете это в исходном репо, в вашем new_my_hello вы сможете получить эти изменения из my_hello, вызвав hg pull и чтобы получить последние версии этих файлов, следуйте с hg update.

. При этом я уверен, что удаление существующей папки .hg не принесет никакой пользы.

Очень полезный ресурс для изучения рабочих процессов hg, который лучше объясняет, почему вы не получаете то, что, как вы думали, вы получаете http://hginit.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...