Единственная распределенная система контроля версий, которую я использовал в своих проектах, - базар. Я не знаю много о git и mercurial, кроме как делать выписки. Причина, по которой мне нравится базар, - это плагин automv. Он обнаруживает, когда я перемещал/удалял файлы вручную (из командной строки/ide и т. Д.), Которые я часто делаю, когда я спешу. Но базар действительно медленный, и я думаю о переходе на git. Есть ли у git что-то похожее на эту функциональность?Есть ли у git эквивалент для плагина automaza базара?
ответ
То, как Git работает в ситуации переезда/переименования, совершенно иная. Git отслеживает только контент, поэтому он знает, что файл X имел SHA1 хэш abc123...
при одном коммите, а файл Y имел тот же хеш abc123...
при следующем коммит. Таким образом, инструменты Git, при просмотре истории или что-то еще, заключают, что файл X должен был быть переименован в имя файла Y в этот момент.
Таким образом, Git восстанавливает действия, предпринятые для перехода от одной фиксации к следующей, без необходимости иметь это знание в момент фиксации. Это может привести к обнаружению ситуации, когда вы переименовываете файл и что-то измените в файле (конечно, это не делает это, сравнивая хэши SHA1, но проводя сравнение текста между файлами, которые были изменены в фиксации).
Предположительно, он достаточно умен, чтобы предположить, что что-то было перемещением, если есть незначительные изменения (например, объявление пространства имен в файле C#)? Проверяю для себя, но не могу на этом ноутбуке ... –
@Jon Skeet: Да, просто обновил свой ответ, чтобы отразить это. –
Да, это прекрасно работает с git. Я полностью раздражен SVN, потому что он не может автоматически распознать эти вещи. –
Вы могли бы искать git add --all
:
Обновление файлов, что мерзавец уже знает о (такой же, как
--update
) и добавить все файлы неотслеживаемые, которые не игнорируются.gitignore
механизмом.
(выделено мной.)
Просто для информации только базар знает хода. SVN, Git, hg знают только копию с версией и удаляют. Я думаю, что different. Но, как упоминалось ранее, git обрабатывает automv очень хорошо (насколько я слышал), только быть настолько умным, чтобы совершать очень быстро после перемещения. Я слышал, что egit делает autocommit после переименования класса.
- 1. GUI для базара, эквивалент gitk
- 2. Есть ли эквивалент hg для git-info?
- 3. Есть ли эквивалент git для clearcase catcr
- 4. Есть ли. Net эквивалент плагина лицензии Maven?
- 5. Есть ли эквивалент «git apply --reject» для git rebase?
- 6. Есть ли у Sencha эквивалент радиостанции JQuery?
- 7. Есть ли эквивалент git stash in perforce?
- 8. Есть ли у AngularJS эквивалент $ (document) .ajaxSuccess()?
- 9. Есть ли у StackTraceElement [] эквивалент Throwable.printStackTrace()?
- 10. Есть ли «git sed» или эквивалент?
- 11. Git: Есть ли эквивалент полосы hg?
- 12. Есть ли «git-dropbox» или эквивалент?
- 13. Есть ли у JavaScript эквивалент? : оператор?
- 14. Есть ли у android эквивалент UIScrollView?
- 15. Есть ли у jquery эквивалент dojo.subscribe()?
- 16. Есть ли у python эквивалент Javascript's 'btoa'
- 17. Есть ли у F # эквивалент Haskell's take?
- 18. Есть ли «p4 have» эквивалент в git?
- 19. Есть ли у плагина allure для python возможности установки/отключения?
- 20. Есть ли у Git A 'Shelf'
- 21. Есть ли у Git встроенный SSH-сервер?
- 22. У jquery есть эквивалент dojo.connect()?
- 23. Есть ли у git концепция уплотнения журнала?
- 24. Есть ли у git «родственник» деревенский?
- 25. Есть ли сценарий, предоставляющий эквивалент git-bisect для Perforce (p4)?
- 26. У jquery есть эквивалент dojo.hitch()?
- 27. Есть ли эквивалент git для CVS $ Log $ в истории комментариев?
- 28. Есть ли эквивалент Bazaar для `git commit -amend`?
- 29. Есть ли исключаемый файл-эквивалент для нажатия git?
- 30. Есть ли эквивалент git для работы Perconce «Reconcile Offline Work»?
Я считаю, что плагин automz для bzr сильно зависит от алгоритма git для автоматического обнаружения переименованных файлов. :-) – bialix