Napisałem i utrzymuję narzędzie open source o nazwie reposurgeon, które edytuje historie repozytoriów kontrolek wersji i może być używane do przenoszenia historii projektów między VCSes. Niedawno otrzymałem pełną obsługę odczytu plików zrzutu Subversion i repo. Ale jest jedna rzecz, której repozytoror jeszcze nie radzi sobie zbyt dobrze, a to tłumaczy scalanie gałęzi Subversion przez kopiowanie do scaleń DIT w stylu git.Jakie są semantyki merge strumieni szybkiego importu git?
Aby ta część była poprawna, muszę zrozumieć semantykę scalania w strumieniu szybkiego importu git o wiele lepiej niż ja. Moje pytania dotyczą tego, która wersja treści ma być widoczna po zatwierdzeniu scalenia.
Oczywiście dołączono modyfikacje plików, zatwierdzenie scalenia powoduje, że ich zawartość jest widoczna. Moje pytania dotyczą ścieżek nie dotknięte przez zatwierdzenie.
Jeśli ścieżka zawiera tylko treść tylko jednego łańcucha commit do scalenia, zakładam, że treść ma być widoczna. Czy to jest poprawne?
Jeśli ścieżka ma treść w więcej niż jednym łańcuchu zatwierdzenia w stosunku do scalenia, która wersja będzie widoczna?
Jeśli plik zostanie usunięty wzdłuż niektórych ścieżek do scalenia, jaka reguła przewiduje, kiedy zostanie usunięta w wersji scalonej?
Er, jeśli szybki import nie zmienia drzewa w odpowiedzi na polecenie scalania, to co oznacza polecenie scalania *? – ESR
W trybie szybkiego importu dodaje on tylko drugie (lub trzecie, czwarte, ...) zatwierdzenie nadrzędne do obiektu commit, który aktualnie tworzysz. –
Co jednak oznacza dodanie zatwierdzenia nadrzędnego *, jeśli nie spowoduje to zmiany drzewa w wersji scalonej? Jakie informacje zawiera ten link dla rodzica? – ESR