У git есть эквивалент для базара плагин automv? - PullRequest
2 голосов
/ 23 декабря 2008

Единственная распределенная система контроля версий, которую я использовал в своих проектах, - это базар. Я мало знаю о мерзавцах и ртутях, кроме как делать заказы. Причиной, по которой мне нравится базар, является плагин automv. Он обнаруживает, когда я перемещаю / удаляю файлы вручную (из командной строки / ide и т. Д.), Что я часто делаю, когда спешу. Но базар очень медленный, и я думаю о том, чтобы перейти к мерзавцу. У git есть что-то похожее на эту функциональность?

Ответы [ 3 ]

8 голосов
/ 23 декабря 2008

Способ работы Git в ситуации перемещения / переименования совершенно другой. Git отслеживает только содержимое, поэтому он знает, что файл X имел хеш SHA1 abc123... при одном коммите, а файл Y, как оказалось, имел тот же хэш abc123... при следующем коммите. Таким образом, инструменты Git при просмотре истории или чего-либо еще делают вывод, что файл X должен быть переименован в имя файла Y в этой точке.

Таким образом, Git реконструирует действия, предпринятые для перехода от одного коммита к другому, без необходимости иметь эти знания во время коммита. Он может обнаруживать ситуации, когда вы переименовываете файл и , изменяете что-то внутри файла (конечно, он не делает этого путем сравнения хэшей SHA1, но выполняет сравнение текста между файлами, которые были изменены в коммите ).

2 голосов
/ 23 декабря 2008

Возможно, вы ищете git add --all:

Обновите файлы, о которых git уже знает (аналогично --update) и добавьте все неотслеживаемые файлы , которые не игнорируются механизмом .gitignore.

(Акцент мой.)

1 голос
/ 11 сентября 2010

Только для вашего сведения, только базар знает ходы. SVN, Git, hg знают только копирование с версией и удаление. Я думаю, что отличается . Но, как упоминалось ранее, git очень хорошо справляется с automv (насколько я слышал), только очень умно совершать коммиты очень быстро после перемещения. Я слышал, что egit делает автокоммит после переименования класса.

...