2009-10-28 9 views
9

Nasz zespół wykorzystuje przepływ pracy git oparty wyłącznie na połączeniu i omawiamy możliwość, aby poprosić wszystkich członków zespołu, aby popchali całą pracę na serwer pewnego popołudnia i zrobili wieczór odnawiania repo serwera.Automatycznie przepisuj pełną historię git, aby pozbyć się prostych zatwierdzeń do scalania

Ja (myślę) to, co chciałbym zrobić automatycznie, to tak długo, jak wszystkie zatwierdzenia są tylko na tym samym zbiorze gałęzi ORAZ liczba równoległych zatwierdzeń jest poniżej danego progu Chciałbym dokonać ponownego zestawienia serii i usuń zatwierdzenie scalenia (s). Ale jestem otwarty na sugestie?

Ktoś wie, jak to zrobić?

Odpowiedz

12

Moim zdaniem powinieneś unikać pokusy ponownego napisania historii tylko po to, by "wyglądać ładnie". Naprawdę nie ma sensu. Historia taka, jak jest, jest dokładniejszym odzwierciedleniem rzeczywistości, a narzędzia raportowania git są zaprojektowane tak, aby były przydatne nawet przy wielu scaleniach.

Jeśli nie chcesz oglądać wielu scaleń, możesz je wyłączyć z wielu zadań raportowania, np.

git log --no-merges 

Co pan proponuje (wieczór podścielanie, prawdopodobnie powodując wszyscy deweloperzy musieli reset) wydaje się tworzenie pracę dla dobra dzieła.

+1

+1 za dobrą ostrość - "ugryzienia rzeczywistości". Git zapewnia tak ogromną przestrzeń narzędziową i tak wiele opcji, może być trudno wiedzieć, co jest inteligentne, a co nie. Jestem głęboko przekonany, że nie tworzymy pracy dla dobra pracy, więc prawdopodobnie będę trzymać się z twoją radą. – krosenvold

5

Nie jestem pewien, jakie to proste. Jeśli wykonasz numer rebase -i, spróbujesz zignorować wszystkie scalenia, które powiodą się, aby scalić bez konfliktu, ale zatrzyma się i czeka na ciebie, jeśli wystąpił konflikt.

Z drugiej strony, użyjesz go jako rebase -i -p, zachowując scalenia, co jest pożądane, gdy użytkownik dokonał rzeczywistego scalenia, ale zupełnie pomija ten punkt.

Być może niektóre sekwencje dwóch poleceń, zachowując scalenia tylko wtedy, gdy chcesz, mogą wykonać zadanie w tym przypadku.

Muszę zgodzić się z Charlesem, że posiadanie historii odzwierciedla rzeczywistość jest o wiele bardziej wartościowe niż sprawienie, że "wygląda ładnie". Faktem jest, że jedno zatwierdzenie zostało wykonane bez znajomości drugiego, a w przypadku kodu źródłowego może to wyjaśnić, dlaczego coś poszło nie tak.

Nasz zespół wykorzystuje czysto scalania opartego git workflow

Co jest złego zawsze wyciągając z --rebase (np git pull -r)? Jeśli chcesz mieć płaską topologię, najprostszym sposobem nie jest scalenie, kiedy możesz dokonać ponownej rozbudowy.

Także: mówisz, że chcesz tylko spłaszczyć, jeśli "scalenie jest czyste". Po prostu spekuluję tutaj, ale nie sądzę, że git rekordy konflikty po tym fakcie są inne niż notatka w domyślnym komunikacie zatwierdzenia, który może nadal nie być.

+1

+1 za pociągnięcie za pomocą --rebase. – mskfisher

Powiązane problemy