Я новачок у Mercurial. Просто не вдається знайти правильну команду. Спробували оновлення / оформлення замовлення без удачі. Я використовую локальне сховище. Дякую
Я новачок у Mercurial. Просто не вдається знайти правильну команду. Спробували оновлення / оформлення замовлення без удачі. Я використовую локальне сховище. Дякую
Відповіді:
Я думаю, що ви хочете hg revert -r<rev> <file>
(це змінить цей файл таким, яким він був у даній редакції).
Як сказав djc, він revert
змінює файл, який відповідає попередній редакції. Якщо ви хочете, щоб він не був на місці, ви можете використовувати hg cat -r revisionid filename
(замінивши перегляд і ім'я файлу, звичайно), який виведе файл у stdout, що підходить для переадресації в будь-яке місце, де ви хочете.
hg revert
дійсно вирішує цю проблему. Але я вважаю, що вас бентежить більш широке коло речей, ніж просто відповідь на ваше запитання і ви хочете спробувати відповісти більш повно.
hg update
це ціла команда репозиторію і не працюватиме на окремих файлах. На відміну від підриву svn update
таким чином. Якщо це зробити, hg --help update
ви можете бачити, що це так, оскільки команда не бере аргумент файлу. З його допомогою можна перемістити весь сховище до певного знімка, але не можна використовувати це лише для одного файлу.
Якщо ви введете, hg --help
ви побачите список команд. Це досить великий і дещо жахливий список, але якщо ви прочитаєте його, ви знайдете цей рядок:
revert restore individual files or directories to an earlier state
Тепер, якщо ви просто хочете останнього стану для порівняння, є ще одна команда, яка може вас зацікавити, і це hg cat
. Це дозволить вам роздрукувати вміст файлу на будь-якій конкретній версії. Потім ви можете перенаправити його вихід у якийсь інший файл. Тоді ви можете мати попередню відому хорошу версію свого файлу та стару версію для порівняння.
Причина, по якій Меркуріал має окрему update
команду, полягає в тому, що в Меркуріалі можна зробити щось, що неможливо в Subversion. Ви можете update
в більш ранній версії, внести зміни, а потім здійснити зобов’язання. Це створить гілку. update
Команда має ефект також зміни батьківського перегляду поточного робочого каталогу, а також зміни вмісту всіх файлів в цьому каталозі для версій цього Батьківська редакція ст.
Це означає, що revert
змінює вміст файлу (або навіть усього сховища, якщо ви даєте команді правильні аргументи), але залишає батьківську версію поточної робочої копії такою ж.
Ви можете дізнатися батьківську версію (або редакцію у разі злиття) поточної робочої копії, скориставшись hg parents
командою.
У Subversion ревізії є суворо лінійною прогресією. Меркуріал створює гілки на краплі капелюха, і їх майже так само легко злити. Ревізії утворюють DAG, а не строго лінійну прогресію.
Щоб витягти конкретну версію певного файлу, це можна зробити в Windows:
hg cat "<FileToBeExtractedPath>" -r 9 > "<ExtractionPath>"
Тут 9 - номер ревізії.
Або ще краще:
hg cat "<FileToBeExtractedPath>" -r 9 -o "<ExtractionPath>"