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.