W ogólnym przypadku, musisz sprawdzić każdy pojedynczy commit, ponieważ nie masz możliwości dowiedzenia się, czy możesz mieć dużą różnicę w jednym, małym diff w następnym, potem w innym dużym różnicie, to w medium diff ...
Najlepszym wyjściem będzie prawdopodobnie ograniczenie się do określonych plików. Jeśli rozważasz tylko jeden plik, nie powinieneś długo szukać kolejnych wersji tego pliku (użyj git rev-list <path>
, aby uzyskać listę, więc nie musisz testować każdego zatwierdzenia). Dla każdego zatwierdzenia, które zmodyfikowało plik, możesz sprawdzić jego rozmiar i dość szybko znaleźć minimum. Zrób to dla kilku plików, mam nadzieję, że się zgodzą!
Najlepszym sposobem na przygotowanie się do rozpowszechniania jest tymczasowe zatwierdzenie poprzez skopiowanie do archiwum, aby można było porównać gałąź z numerem tarball
. W ten sposób, można to zrobić:
git rev-list path/to/file | while read hash; do echo -n "$hash "; git diff --numstat tarball $hash path/to/file; done
aby uzyskać ładny listę wszystkich zatwierdzeń z ich wielkości dyferencjału (pierwsze trzy kolumny będą SHA1, liczba linii dodanej, a liczba linii usuwane).Potem możesz go po prostu podłączyć do awk '{print $1,$2+$3}' | sort -n -k 2
, a będziesz mieć posortowaną listę zatwierdzeń i ich rozmiary różnic!
Jeśli nie możesz ograniczyć się do niewielkiej garści plików do przetestowania, może będę miał ochotę ręcznie wdrożyć coś podobnego do git-bisect
- po prostu spróbuj zawęzić swoją drogę do małej różnicy, przyjmując założenie, że w wszystkie prawdopodobieństwo, zobowiązuje się w pobliżu twojego najlepszego przypadku, będzie miało również mniejsze różnice, a zatwierdzenia z dala od niego będą miały większe różnice. (Gdzieś pomiędzy metodą Newtona i pełny na binarnego wyszukiwania/GRID, prawdopodobnie?)
Edit: Inną możliwością, zasugerował w Douglas' answer, jeśli uważasz, że niektóre pliki mogą być identyczne do tych w niektórych popełnić, jest hash je przy użyciu git-hash-object
, a następnie zobacz, co popełnia w Twojej historii ten blob. Jest question with some excellent answers o tym, jak to zrobić. Jeśli zrobisz to za pomocą kilku plików - najlepiej tych, które często się zmieniają - możesz dość szybko zawęzić celowe zatwierdzenie.
Zauważyłem, że najstarsze pliki w tej smoły zostały zmodyfikowane w dniu 31/10/2006 12: 57. Zacznę tam moje poszukiwania. – Douglas
Jak wspomniano w oryginalnym poście, z grubsza wiem, że rozwidliły się gdzieś w sezonie 2004/2005, ale to zbyt wiele, aby zbadać je ręcznie. –