Hg обновление до предыдущего коммита, удаляющее любые изменения - PullRequest
2 голосов
/ 06 января 2012
working directory

Неужели

hg commit (resulted in rev3)

Скопировал несколько каталогов внутри ... изменил некоторые файлы. Сделал

hg add  
hg commit (resulted in rev4 - tip)  

Как вернуться точно в состояние rev3 . hg update 3 изменит файлы в состояние, в котором они находились rev3 , но также оставит все скопированные каталоги внутри. Я хочу получить рабочий каталог без скопированных каталогов и файлов, которые были добавлены после rev3.

Ответы [ 2 ]

2 голосов
/ 06 января 2012

Этого не произойдет для меня:

> hg init
> mkdir first
> jed first/foo.txt
> hg add
   adding first/foo.txt
> hg commit -m asd
> mkdir second
> jed second/foo.txt
> hg add
   adding second/foo.txt
> hg commit -m asd
> hg update 0

Сейчас first существует, но second нет ...

Вы уверены, что добавили все вновые каталоги перед вашим коммитом?

1 голос
/ 07 января 2012

Как пишет Джон, Mercurial, как правило, пытается очистить после себя. Поэтому, когда вы hg update, вы должны получить именно то, что совершили. Я предполагаю, что вы видите следующее поведение:

$ hg init repo
$ cd repo
$ echo "# some C program" > foo.c
$ hg add foo.c
$ hg commit -m first
$ mkdir dir
$ echo "$ other C program" > dir/bar.c
$ hg add dir/bar.c
$ hg commit -m second
$ echo "object file" > dir/bar.o
$ hg update 0
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ ls
foo.c  dir
$ ls dir
bar.o

Таким образом, неотслеживаемый файл dir/bar.o остался позади, но отслеженный файл dir/bar.c был правильно удален. То есть: Mercurial не удалит неотслеживаемые файлы , так как не знает, содержат ли они ценные данные. Это применимо, даже если файлы игнорируются шаблоном в .hgignore. Если бы в каталоге содержался только отслеживаемый файл dir/bar.c, то каталог был бы полностью удален при обновлении до версии, в которой он не нужен.

Обычный способ очистки неотслеживаемых файлов - использовать расширение purge .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...