Mercurial: qrefresh для избранных файлов - PullRequest
2 голосов
/ 28 июля 2011

Скажем, у меня есть несколько файлов, которые я изменил, так что когда я делаю статус hg, появляется что-то вроде:

M ../../file1
M ../../file2
M ../../file3

Что если я хочу сделать qrefresh только для изменений, которые я сделал для file2, и неявно отказаться от изменений, которые я сделал в file1 и file3, чтобы они вернулись в исходное состояние? Есть ли способ сделать это с помощью Mercurial? Я довольно новичок во всем, что касается контроля версий.

1 Ответ

2 голосов
/ 28 июля 2011

Поскольку hg qrefresh будет автоматически включать все изменения, вам нужно только исключить определенные файлы, и обновление фактически удалит все изменения этих файлов из патча.Затем вы можете восстановить файлы.

Это обновляет все, кроме file1 и file3 в патче (теперь патч не содержит изменений):

hg qrefresh -X ../../file1 -X ../../file3

Сейчас file1 и file3 все еще имеют некоторые изменения и должны быть отменены:

hg revert ../../file1 ../../file3

Это изменит текущие версии на ../../file1.orig и ../../file3.orig, на случай, если вам понадобятся изменения снова.Вы также можете добавить переключатель --no-backup, и они не будут созданы.

Вы также можете сделать это в обратном порядке:

hg revert ../../file1 ../../file3
hg qrefresh

Для обновления не нужны аргументывремя, потому что он не увидит изменений в этих 2 файлах по сравнению с родительским в рабочем каталоге и, следовательно, исчезнет из патча (обновление патча в основном перезаписывает патч).Я бы так и сделал, но я также хотел продемонстрировать переключатель -X.

Проверьте hg help revert и hg help qrefresh, чтобы узнать больше.

...