Come vengono gestite due persone, modificando contemporaneamente lo stesso file?

StackOverflow https://stackoverflow.com/questions/4028845

  •  26-09-2019
  •  | 
  •  

Domanda

Credo che il titolo lo dica. Sono nuovo per il controllo della fonte.

Quindi, diciamo che ho due sviluppatori che lavorano allo stesso progetto e hanno iniziato a modificare gli stessi file contemporaneamente, tutti quelli di loro inviano la nuova versione in un momento leggermente diverso. Da quello che ho capito colui che invia le modifiche per ultimo avrà le sue modifiche mantenute, l'altro il codice sarà solo nell'archivio !!!

È corretto?

Si prega di precisare. Grazie.

È stato utile?

Soluzione

No, non è del tutto corretto. Dipende in qualche modo dal software di controllo della versione che stai utilizzando, 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 modificano entrambi 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 prima. Quando Bob tenta di controllare il suo dentro, Git lo avvertirà che c'è un conflitto e non permetterà a l'impegno di essere spinto nel repository principale. Bob deve aggiornare il suo repository locale e correggere il conflitto. 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>
    }
}

Il <<<<<, ===== e >>>>> I marcatori mostrano quali linee sono state cambiate contemporaneamente. Bob deve risolvere il conflitto in qualche modo sensibile, rimuovere i marcatori e commettere il risultato.

Quindi ciò che alla fine vive nel repository è:

Versione originale -> Versione di Alice -> Versione fissata da conflitto di Bob.

Riassumendo: il primo a impegnarsi entra senza problemi, il secondo a impegnarsi deve risolvere il conflitto prima di entrare nel repository. Non dovresti mai finire con i cambiamenti di qualcuno che vengono clobberati automaticamente. Ovviamente Bob può risolvere il conflitto in modo errato, ma la bellezza del controllo della versione è che puoi ripristinare la correzione errata e ripararlo.

Altri suggerimenti

Molto dipende dal sistema che stai usando.

Tuttavia, nel caso comune è: chi commette i suoi cambiamenti secondi, dovrebbe eseguire un'operazione di "unione". Significa che dovrebbe confrontare i due file e trovare una versione unita. Tuttavia (!) Molti sistemi popolari (incluso IDE) sono dotati di strumenti intelligenti per aiutarti a farlo.

Ecco alcuni strumenti come quello rispetto:http://en.wikipedia.org/wiki/comparison_of_file_comparison_tools

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top