В ClearCase происходит злой близнец, когда два файла найдены с тем же именем в двух различных версиях каталога, и Если элемент, OIDs отличаются, но имена являются тем же.
В МЕРЗАВЦЕ идентификатор SHA1 всегда уникален, и файл с тем же именем всегда имеют другой идентификатор SHA1.
У нас нет понятия о Злых близнецах, но существуют вероятные случаи, где существует шанс для 2 или больше разработчиков, создающих файл с различным содержанием с тем же именем файла в том же каталоге. Во время слияния, когда оба файла полностью отличаются, существуют возможности разработчиков сохранить его изменения одними и оставить другие изменения, приводящие к потере кода.
Может любой сообщать мне, будут ли проблемы в МЕРЗАВЦЕ, подобном ClearCase или синусу, каждый идентификатор SHA1 уникален в МЕРЗАВЦЕ не будет никаких Злых двойных проблем.
Git отслеживает на уровне всего дерева, а не отдельных файлов и каталогов, поэтому у него нет такой концепции, как OID.
При объединении историй, которые включают несовместимые изменения в файл (например, оба добавили новый файл с другим содержимым), Git вызовет конфликт слияния и остановится, чтобы позволить пользователю разрешить конфликт или прервать слияние.
Конечно, Git не может заставить пользователя, выполняющего слияние, поступать правильно, но, возможно, труднее полностью игнорировать одну сторону конфликта. В Git конфликт будет в самом файле, а не в каталоге, в котором находится файл. Другими словами, конфликт будет касаться содержимого файла, а не того, какой OID следует связать с каталогом. Конечно, в зависимости от используемого инструмента, пользователь может по-прежнему просто нажимать «принимать мою сторону во всех конфликтах», но Git это не заботит ни в малейшей степени (хотя босс и коллеги ленивого болвана могут очень заботиться!).
О злые двойные ошибки, это возвращает меня назад. Нет, в git таких ошибок быть не должно. Git на самом деле не столько отслеживает весь файл, сколько фрагменты файлов.
Да, в Git есть какая-то «злая» операция, но не по той же причине, что злые близнецы ClearCase :
Их называют злым слиянием :
слияние, которое вводит изменения, которых нет ни в одном родителе.
То есть: вставка в код вещей, о которых никто никогда не просил, с названием «злое слияние», потому что это сложный угловой случай для «git blame» при аннотировании файла.
Эти слияния обычно связаны с семантическим конфликтом между двумя слияниями версий (а не с простым текстовым конфликтом).
Побочным эффектом будет то, что вместо добавления, удаления или изменения измененной строки вы получите обе строки (из двух объединяемых версий) в результате слияния ...
Нет, но есть оторванная голова. Извините, не смог удержаться :)
Что произойдет, так это то, что файл будет отображаться как конфликтующий, когда второй разработчик будет тянуть перед тем, как сделать push. Когда файлы совершенно разные, будет очевидно, что у них должны быть разные имена файлов. Тогда второй разработчик будет что-то делать (например, переименовывать свой файл, чтобы не было конфликта).