Як перерахувати всі файли у сховищі в Mercurial (hg)?


74

Чи існує команда у mercurial, яка перелічить усі файли, які зараз перебувають під контролем джерела?

Я можу зробити dir /sсписок усіх файлів у моїй папці та вкладених папках, але я не маю уявлення, які були додані до мого сховища. У мене є безліч виключених типів файлів і папок, і я хочу переконатися, що жоден з них не був доданий до того, як я встановив їх у своєму файлі .hgignore.


Ви повинні поглянути на цю публікацію: mercurial.808500.n3.nabble.com/…
Педро

Відповіді:


70

hg status --all перерахує всі файли у дереві з літерою, що вказує його статус: M для модифікованих, C для чистих (належить hg), а I для ігнорованих.

Для просто проігнорованих файлів використовуйте hg status -i. Для файлів, які будуть додані під час наступного коміту, використовуйте hg status -a. Вони показують лише те, що вам потрібно знати, і не вимагають сканування довгого списку файлів.


2
Оскільки інші можуть шукати тут інформацію, я подумав згадати своє нове розширення hglist, яке дає Mercurial команду "ls": alastairs-place.net/projects/hglist
alastair

2
hg st -A- це скорочена версія вищезазначеної команди.
Serge Stroobandt

10
Чудова відповідь, але це не відповідає безпосередньо на питання. У чистому робочому стані hg status -cвідображаються всі відстежувані файли та лише відстежувані файли. З іншими змінами hg status -carmdзроблю свою справу. Додати, -nщоб виключити прапор статусу.
undefined

ця відповідь неправильна, оскільки hg st - усі також перерахують усі файли, що не відслідковуються (з попереднім?)
bph

64

Ви також можете перевірити hg locateкоманду. Я використовую його разом із -Iопцією, коли хочу обмежити файли до певного каталогу.

Щоб перерахувати всі файли у вашому сховищі:

hg locate

З каталогу сховища ("кореневий"):

hg locate -I dir/sub_dir/dir_of_interest

Шлях, що передається, -Iповинен змінюватися залежно від каталогу, в якому ви виконуєте команду. Якщо ви запускаєте команду з dirкаталогу у прикладі вище, вам доведеться змінити свій аргумент, щоб знайти:

hg locate -I sub_dir/dir_of_interest

Список вихідних файлів залишиться незмінним, відображаючи повний шлях кожного файлу до сховища.

Спробуйте hg help -v locateотримати додаткову інформацію.


2
Якраз те, що мені потрібно, дякую. Це краща відповідь для тих, хто просто має перелік відстежуваних файлів.
Gringo Suave

2
hg loc- це скорочена версія вищезазначеної команди.
Serge Stroobandt

4
Це справжня відповідь. Відповідь Неда - непочаткова.
Ніл Трафт,

2
Якщо ви дійсно хочете використовувати , hg locateяк це, ви можете автоматично отримати поточний каталог з: hg locate -I `pwd`.
Benjohn

@NeilTraft Я не можу поділитися вашим ентузіазмом із використанням hg locateподібного. hg status -iперелічить лише файли, які ігноруються. hg status -aперерахує лише ті, які будуть додані комітом. Оскільки hg locateіснує значний ризик помилки користувача при узгодженні списку, який ви бачите, зі списком, який ви очікуєте. Де hg locateнадзвичайно корисним є пошук у будь-яких / усіх версіях певних імен файлів. Аналогічним чином hg grepбуде здійснюватися пошук у всьому вмісті файлу за будь-якою / усіма редакціями.
Benjohn

23

hg manifestбуде перераховувати лише файли у сховищі, тоді як hg status --allперераховуватиме всі файли в структурі сховища та включатиме маркер, який відстежується, а який ні.


2
Це дає мені саме те, що я хотів, незважаючи на незначний недолік, що його не можна звузити за допомогою папки, як OP. Це все-таки краще, ніж прийнята відповідь.
Ніл Трафт,

3

Перелік лише проігнорованих або доданих файлів

До списку тільки в ігноровані файли, робити: hg status -i.

Щойно додані файли виконайте hg status -a.

Якщо вам не подобається друкувати багато, ви можете скоротити їх до hg sta -iта hg sta -a.

Ці два способи використання statusє більш простими, ніж locateі дадуть вам конкретні стани файлів, які вас турбують, тому він значно менше схильний до помилок.

Більше про hg status

Щоб отримати список всіх файлів в ртутному репо зробити: hg status --all.

Файлам буде надано префікс перед ними, коли вони будуть перераховані:

  M = modified
  A = added
  R = removed
  C = clean
  ! = missing (deleted by non-hg command, but still tracked)
  ? = not tracked
  I = ignored

Якщо ви хочете перерахувати лише файли в папці , ви можете вказати шлях:

  • hg st --all MyFolder - всі файли в MyFolder
  • hg sta -i MyFolder - просто проігноровані файли в.

Як і -iдля "Ігнорується" та -aдля "Додано", інші прапори доступні для переліку лише файлів, що мають певний статус.

Отримання help

Прочитайте тут іншу дуже корисну відповідь для вичерпного пояснення statusкоманди. Він зменшив кількість голосів, оскільки автор намагався показати, що ви можете виявити все вищесказане, запитуючи Меркуріал про statusкоманду, як це:

hg help status

Ви можете попросити Mercurial розповісти вам про будь-яку з таких команд, як ця. А якщо вам потрібен список команд Mercurial, то введіть hg help.


-3
C: \> hg help -v status
статус hg [ОПЦІЯ] ... [ФАЙЛ] ...

псевдоніми: вул

показати змінені файли в робочому каталозі

    Показати стан файлів у сховищі. Якщо вказані імена, лише файли
    цей збіг показано. Файли, чисті чи ігноровані або джерело
    операція копіювання / переміщення, не перераховані, якщо -c / - clean, -i / - не проігноровано,
    -C / - копії або -A / - всі дані. Якщо параметри не описані з "показати
    вказано лише ... ", використовуються опції -mardu.

    Варіант -q / - тихий приховує невідстежувані (невідомі та ігноровані) файли, окрім випадків
    явно запитується з -u / - невідомо або -i / - ігнорується.

    ПРИМІТКА: статус може не погоджуватися з різницею, якщо дозволи змінилися
    або відбулося злиття. Стандартний формат різниці не повідомляє
    зміни дозволів і різниця повідомляє лише про зміни щодо одного злиття
    батько.

    Якщо дається одна редакція, вона використовується як базова версія. Якщо два
    дано ревізії, показані відмінності між ними. Thechange
    Опція також може використовуватися як ярлик для переліку змінених файлів
    перегляд від першого батьківського.

    Для відображення стану файлів використовуються коди:

      М = модифікований
      A = додано
      R = вилучено
      C = чистий
      ! = відсутній (видалено командою non-hg, але все одно відстежується)
      ? = не відстежується
      I = ігнорується
        = походження попереднього файлу, вказаного як A (додано)

варіанти:

 -A - всі показ стану всіх файлів
 -m --modified показує лише змінені файли
 -a --added показати лише додані файли
 -r --видалено показувати лише видалені файли
 -d --видалений показ лише видалених (але відстежуваних) файлів
 -c --clean показує лише файли без змін
 -u --невідомо показує лише невідомі (не відстежувані) файли
 -i --ігнорований показ лише проігнорованих файлів
 -n --no-status приховувати префікс стану
 -C --копії показують джерело скопійованих файлів
 -0 --print0 кінцеві імена файлів із NUL, для використання з xargs
    --rev show відмінність від версії
    --змінити список змінених файлів версії
 -I --indelute включають імена, що відповідають заданим шаблонам
 -X --exclude виключити імена, що відповідають заданим шаблонам

глобальні варіанти:
 -R - кореневий каталог сховища сховища або ім'я накладеного файлу набору
    --cwd змінити робочий каталог
 -y --noninteractive не підказувати, прийміть "так" для будь-яких необхідних відповідей
 -q - спокійне придушення виводу
 -v --verbose увімкнути додатковий вивід
    --config встановити / замінити параметр конфігурації (використовувати 'section.name = value')
    --debug увімкнути вивід налагодження
    --debugger start налагоджувач
    --encoding встановлює кодування набору символів (за замовчуванням: cp1252)
    --encodingmode встановлює режим кодування символів (за замовчуванням: суворий)
    --traceback завжди друкує trackback на виняток
    --time час, скільки часу займає команда
    --profile профіль виконання команди друку
    - версія виводу інформації про версію та вихід
 -h --допомога відображення довідки та виходу

5
Забавно, як моя відповідь з року в рік отримує прихильність. Але чи справді так погано говорити людям читати посібник? Stackoverflow зробив недійсною документацію? Чи перестали користуватися --help/ /?/ manта іншою документацією люди, оскільки швидше запитувати про stackoverflow, ніж читати? Я відмовляюся видаляти свою відповідь :)
simendsjo

Хе, ну, ви можете проголосувати за мене, оскільки це найкорисніша відповідь тут. Я не буду писати іншого на основі того, що я з нього виявив, і не подивлюсь, чи не отримаю я яких-небудь голосів :-)
Бенджон,

1
Чого це варте, ваша відповідь чудова. Але користувач повинен це знати status, оскільки одна з hgкоманд насправді зробить це в першу чергу. Я використовую Mercurial щодня, і я не знав, що його можна попросити показати проігноровані файли.
Benjohn,

2
@simendsjo: StackOverflow - це не повернення документів. Ваша "відповідь" - це стіна тексту, а важливої ​​частини ( --all) навіть немає на екрані (для її перегляду потрібно прокрутити); і ніде ви насправді не даєте фактичного слова, щоб досягти мети. Загалом, не дуже корисно. Для порівняння Бенджон спочатку дає бажану команду, а потім пропонує пояснення.
Ітан Фурман,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.