Есть ли у GIT проблемы злых близнецов? - PullRequest
7 голосов
/ 26 мая 2010

В ClearCase злой близнец возникает, когда в двух разных версиях каталога обнаружены два файла с одинаковыми именами, и если идентификаторы элементов отличаются, но имена совпадают.

В GIT идентификатор SHA1 всегда уникален, а файлы с одинаковыми именами всегда имеют разные идентификаторы SHA1.

У нас нет концепции злых близнецов, но есть вероятные случаи, когда 2 или более разработчиков могут создать файл с различным содержимым с одинаковым именем файла в одном и том же каталоге. Во время слияния, когда оба файла полностью различаются, у разработчиков есть шанс оставить свои изменения в покое и оставить другие изменения, приводящие к потере кода.

Может кто-нибудь сообщить мне, будут ли проблемы в GIT, аналогичные ClearCase, или если каждый идентификатор SHA1 уникален, в GIT не будет проблем зла-близнеца.

Ответы [ 4 ]

7 голосов
/ 26 мая 2010

Git отслеживает на уровне всего дерева, а не отдельных файлов и каталогов, поэтому у него нет такой концепции, как OID.

При объединении историй, которые содержат несовместимые изменения в файле (например, оба добавили новый файл с другим содержимым), Git создает конфликт слияния и останавливается, чтобы позволить пользователю разрешить конфликт или прервать слияние.

Конечно, Git не может заставить пользователя делать слияние правильно, но, возможно, сложнее полностью игнорировать одну из сторон конфликта. В Git конфликт будет в самом файле, а не в каталоге, в котором находится файл. Другими словами, конфликт будет из-за содержимого файла, вместо которого OID должен быть связан с каталогом. Конечно, в зависимости от используемого инструмента, пользователь все еще может просто нажать «принять мою сторону во всех конфликтах», но Git не будет заботиться ни в малейшей степени (хотя боссу и коллегам ленивого хама может быть очень важно!) *

3 голосов
/ 26 мая 2010

Нет, но есть отсоединенная головка . Извините, не мог с собой поделать:)

Что может случиться, если файл окажется конфликтующим, когда второй разработчик потянет, прежде чем сделать толчок. Когда файлы совершенно разные, будет очевидно, что они должны иметь разные имена файлов. Затем второй разработчик что-то предпримет (то есть переименует свой файл, чтобы не было конфликтов).

3 голосов
/ 26 мая 2010

Да, в Git есть какая-то «злая» операция, но не по той же причине, что и у «1001» злых близнецов ClearCase :

Они называются злым слиянием :

слияние, которое вносит изменения, которые не появляются ни в одном из родителей.

Т.е.: помещать в код вещи, которые никто никогда не просил, называть «злым слиянием», потому что это сложный случай, который «git blame» решает при аннотировании файла. Эти слияния обычно связаны с семантическим конфликтом между двумя версиями слияний (а не простым текстовым конфликтом).
Побочным эффектом будет то, что вместо добавления, удаления или изменения измененной строки вы получите обе строки (из двух объединяемых версий) в результате объединения ...

0 голосов
/ 26 мая 2010

О, злые двойные ошибки, это возвращает меня обратно. Нет, у вас не должно быть таких ошибок в git. Git на самом деле отслеживает не весь файл, а треки файлов.

...