No, non è del tutto corretto. Dipende un po 'dal software di controllo della versione che stai usando, ma mi piace Git, quindi ne parlerò.
Supponiamo di avere un file Foo.java:
class Foo {
public void printAWittyMessage() {
// TODO: Be witty
}
}
Alice e Bob sia modificano il file. Alice fa questo:
class Foo {
public void printAWittyMessage() {
System.out.println("Alice is the coolest");
}
}
e Bob fa questo:
class Foo {
public void printAWittyMessage() {
System.out.println("Alice is teh suk");
}
}
Alice controlla la sua versione in prima. Quando Bob tenta di controllarlo, Git lo avviserà che c'è un conflitto e non permetterà che il commit venga inserito nel repository principale. Bob deve aggiornare il proprio repository locale e correggere il conflitto. Egli otterrà qualcosa di simile:
class Foo {
public void printAWittyMessage() {
<<<<< HEAD:<some git nonsense>
System.out.println("Alice is the coolest");
=====
System.out.println("Alice is teh suk");
>>>>> blahdeblahdeblah:<some more git nonsense>
}
}
I <<<<<
, =====
e >>>>>
indicatori mostrano che le linee sono state modificate contemporaneamente. Bob deve risolvere il conflitto in qualche modo ragionevole, rimuovere i marcatori e impegnare il risultato.
Quindi, ciò che alla fine vive nel repository è:
Versione originale -> la versione di Alice -> Versione conflitto fissa di Bob.
Per riepilogare: il primo a commit entra senza problemi, il secondo a commit deve risolvere il conflitto prima di entrare nel repository. Non dovresti mai finire con le modifiche di qualcuno che vengono automaticamente danneggiate. Ovviamente Bob può risolvere il conflitto in modo errato, ma la bellezza del controllo della versione è che è possibile ripristinare la correzione errata e ripararla.
fonte
2010-10-26 23:29:00
L'hai detto bene! Applaude :-) –