DVCS добивается лучшего слияния, отслеживая родительские ревизии слияний. В Subversion, когда вы объединяете одну ветку в другую, вы теряете информацию о том, откуда произошло слияние. В DVCS, таком как Bazaar или Git, «объединенная» ревизия заканчивается двумя родительскими ревизиями.
Переименование обрабатывается по-разному между DVCS. Git, например, вообще не отслеживает переименование, потому что для Линуса это было неважно. Mercurial записывает их как «скопировать старый файл в новый, удалить старый». По словам Марка Шаттлворта , основателя Canonical, Darcs и Bazaar - единственные DVCS, которые правильно обрабатывают переименование файлов.
Как базар узнает, что я переименовал файл?
Переименования определяются пользователем, так же как добавление или удаление файлов. Используйте команду "bzr rename <old> <new>
", чтобы пометить файлы или каталоги для переименования. Если вы уже переименовали файл в дереве, вы можете использовать опцию "--after
".
Что если я переименую два файла как часть одного и того же коммита?
Затем вы набираете «bzr rename <old> <new>
» один раз для каждого файла. Базар не пытается угадать, какие файлы были переименованы.
Что произойдет, когда я произвожу рефакторинг, поместив половину содержимого файла в новый файл, заново сделав отступ и потеряв часть пробела почти в каждой строке?
Затем вы набираете «bzr add
» для нового файла, поскольку вы его не переименовываете.