2010-12-29 2 views
9

Если я добавлю новый файл в корень моего проекта, он появится с ? статусом в hg st и добавляется hg add.Как получить mercurial, чтобы заметить файлы, добавленные в подкаталоги? (hg st, hg add)

Однако, если я добавляю новый файл в подкаталог, он вообще не отображается в hg st и добавляется только в том случае, если я явно добавляю файл (даже если я добавляю каталог, содержащий файл).

Как я могу получить mercurial, чтобы заметить файлы в подкаталогах, аналогично тому, как их подчиняет?

Благодаря

+0

Это происходит для любого подкаталога (т. Е. Независимо от его имени) или только для конкретных? –

+0

Пожалуйста, разместите конкретный пример, иллюстрирующий проблему, начиная с 'hg init', как пример в моем ответе/предположении. –

+0

Имеет ли статус «hg statusallall» листинг для файла? – Matt

ответ

14

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

Однако, если вы указали простую маску, она работает только с вашим текущим рабочим каталогом (то есть с рабочим каталогом команды hg, а не с рабочим каталогом, связанным с репозиторием), поэтому, если вы сейчас находитесь в подкаталог, он добавит эти файлы, если вы находитесь в корневом каталоге, вместо этого они будут добавлять эти файлы.

Другими словами, это:

hg add test* 

работает только с файлами в каталоге вы в данный момент находится.

Вы можете переопределить это поведение, задав маску, которая говорит рт.ст. работать на подкаталоги:

hg add **/test* 

Это говорит «добавить все файлы, которые соответствуют„тест *“в текущем каталоге и всех суб- каталоги.

Если удалить один из asterixes, вы работаете только на подкаталоги текущего рабочего каталога.

Это поможет, если вы вывесили, какие конкретные команды, которые выполняются, и выход, если таковые имеются, и выход hg st до и после.

+1

Я не применяю маску. Я просто добавляю файл в subdir и делаю 'hg st', и не вижу никакого вывода (даже неизвестный статус'? 'Для файла). Если я делаю то же самое в корневом каталоге, я вижу файл с неизвестным статусом. Стоит упомянуть, что subdir не игнорируется в .hgignore. –

+0

. Каково имя каталога и какое имя файла, и можете ли вы разместить файл .hgignore на всякий случай? –

+0

О, и ответьте также на ответ @Mark Tolonen, возможно, это ваша проблема. –

3

Вы тоже hg init в подкатегории? Если да, то нет. Ниже показан вопрос:

C:\>hg init project 
C:\>cd project 
C:\project>hg init sub 
C:\project>echo >file1 
C:\project>echo >sub\file2 
C:\project>hg st 
? file1 

Удалить .hg каталог вложенной папки, чтобы исправить это:

C:\project>rd /s/q sub\.hg 
C:\project>hg st 
? file1 
? sub\file2 

В отличие от Subversion, Mercurial использует только в .hg каталог в корневом каталоге проекта.

+0

Спасибо, Марк, но нет, я не 'hg init' какой-либо subdir, и нет каталогов' .hg', кроме как в моем корне. Любая другая идея? –

+0

Только идея состоит в том, чтобы опубликовать полный пример команд, ведущих к проблеме. У вас есть .hgignore? Возможно, что-то случайно подходит. Что произойдет, если в новом каталоге вы «hg init», создадите файл, создадите поддиректор, создадите файл в subdir и «hg status»? Это должно показать оба файла. –

Смежные вопросы