Mercurial: “невідстежений файл у робочому каталозі відрізняється від файлу в запитуваній редакції”?


78

Хтось може сказати мені, що означає ця Ртутна помилка?

невідстежений файл у робочому каталозі відрізняється від файлу в запитуваній редакції

Це сталося під час отримання hg:

C:\myapp>hg fetch ssh://hg/myapp-v1
pulling from ssh://hg/myapp-v1
searching for changes
adding changesets
adding manifests
adding file changes
added 93 changesets with 693 changes to 78 files (+1 heads)
updating to 797:0df7dbe7dc06
196 files updated, 0 files merged, 196 files removed, 0 files unresolved
merging with 704:edb7765768c6
abort: untracked file in working directory differs from file in requested revision: 'a/b/c/d.java'

З того, що я можу сказати, цей файл (a / b / c / d.java) не відповідає жодному шляху, налаштованому в .hgignore. І цей конкретний файл також ідентичний у двох сховищах (myapp & myapp-v1) ..

Мені незрозуміло, що це взагалі означає. ??

Відповіді:


83

Це означає, що у вас вже є файл, названий a/b/c/d.javaу вашому локальному робочому каталозі репозиторію myapp, але він не доданий (відстежуваний), і fetch не бажає його перезаписувати під час оновлення / злиття.

Ви можете зробити ефір:

  • Перемістіть свою копію a/b/c/d.javaз місця, а потім виконайте витягування / оновлення. Після цього порівняйте перенесене a/b/c/d.javaз одним завантаженням.

або

  • hg add a/b/c/d.java, hg commit a/b/c/d.javaа потім витягніть / об'єднайте

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

Крім того, слід розглянути можливість припинення використання fetch. Він поєднує в собі pullі updateі mergeдля вас, що це просто не безпечний спосіб бути. У цьому випадку ви pullмали б успіх, і те, і інше, updateі mergeнадіслали б вам набагато корисніші повідомлення.


Перед виконанням злиття hg statusне повертається жодних змін. hg add a/b/c/d.javaповертає "a / b / c / d.java вже відстежено"
Маркус Леон

Цікавий момент щодо вибірки проти витягування / злиття. Я зробив це pull, і тоді mergeя отримую багато повідомлень у формі:remote changed dir/blah.xml which local deleted use (c)hanged version or leave (d)eleted?
Marcus Leon

так, злиття - це кодування, і це не слід замовчувати. до першої частини ми могли б зрозуміти це з вашим hg statрезультатом, але може бути так, що ваш поточний робочий каталог не є кореневим кодом репо ?, Це зробило б можливим, щоб hg add сказав сказати додано, але отримати сказати не відслідковується. Однак лише здогадки.
Ry4an Brase


11

Просто прийміть діалогове вікно помилки та поставте галочку Discard local changes, no backup

введіть тут опис зображення

І ви повинні бути добрими, він перезапише будь-які невідстежувані локальні файли ...


8

Я спробував відповідь Ry4an (про видалення файлу), але вона все одно не спрацювала, тому я провів чистку, яка позбулася всіх слідів, так що це спрацювало після. Про всяк випадок, коли хтось шукає альтернативного рішення.


чистка hg, здається, не спрацювала для мене, вона нічого не очистила, і я все ще отримую те саме повідомлення
Нагіб Іхаб

3

Якщо ви використовуєте TortoiseHG, ви можете встановити прапорець "Видалити локальні зміни, без резервної копії" у вікні оновлення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.