2010-10-26 16 views
13

Wierzę, że tytuł mówi o tym. Jestem nowy w kwestii kontroli nad źródłami.Jak obsługiwane są dwie osoby, jednocześnie edytujące ten sam plik?

Załóżmy, że mam dwóch programistów pracujących nad tym samym projektem i rozpoczęli edycję tego samego pliku (ów) w tym samym czasie, a następnie wszyscy wysłali nową wersję w nieco innym czasie. Z tego co rozumiem, ten, który przesyła zmiany ostatnie, będzie miał zachowane zmiany, kod drugiego będzie tylko w archiwum !!!

Czy to prawda?

Proszę wyjaśnić. Dzięki.

Odpowiedz

29

Nie, to nie do końca poprawne. To zależy od tego, z jakiego oprogramowania kontroli wersji korzystasz, ale lubię Gita, więc porozmawiam o tym.

Załóżmy, że mamy Foo.java pliku:

class Foo { 
    public void printAWittyMessage() { 
     // TODO: Be witty 
    } 
} 

Alicja i Bob zarówno modyfikacji pliku. Alicja robi to:

class Foo { 
    public void printAWittyMessage() { 
     System.out.println("Alice is the coolest"); 
    } 
} 

i Bob robi to:

class Foo { 
    public void printAWittyMessage() { 
     System.out.println("Alice is teh suk"); 
    } 
} 

Alicja sprawdza jej wersję w pierwszej kolejności. Kiedy Bob spróbuje go sprawdzić, Git ostrzeże go, że jest konflikt i nie pozwoli, aby zatwierdzenie zostało przekazane do głównego repozytorium. Bob musi zaktualizować swoje lokalne repozytorium i naprawić konflikt. dostanie coś takiego:

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> 
    } 
} 

W <<<<<, ===== i >>>>> markery wskazują, które linie zostały zmienione jednocześnie. Bob musi rozwiązać konflikt w rozsądny sposób, usunąć znaczniki i zatwierdzić wynik.

Więc co w końcu mieszka w repozytorium jest:

Original version -> wersja Alicji -> konflikt utrwalonych wersja Boba.

Podsumowując: pierwszy do zatwierdzenia dostaje się bez żadnych problemów, drugi do zatwierdzenia musi rozwiązać konflikt przed wejściem do repozytorium. Nigdy nie powinno się skończyć, gdy ktoś zmienia się automatycznie. Oczywiście Bob może rozwiązać konflikt nieprawidłowo, ale piękno kontroli wersji polega na tym, że możesz przywrócić nieprawidłową poprawkę i ją naprawić.

+0

Mówiłeś to ładnie! Klaszcze :-) –

4

Wiele zależy od używanego systemu.

Jednak w powszechnym przypadku: kto zobowiązuje się do zmian, drugi będzie musiał wykonać operację "scalania". Oznacza to, że musiałby porównać oba pliki i wymyślić scaloną wersję. Jednak (!) Wiele popularnych systemów (w tym IDE) ma inteligentne narzędzia, które pomogą Ci to zrobić.

Oto niektóre narzędzia tak porównaniu: http://en.wikipedia.org/wiki/Comparison_of_file_comparison_tools

Powiązane problemy