Reorganizuję pojedynczy plik skryptowy PHP, aby zadeklarować funkcje i klasy w osobnych plikach. Jak przenieść blok kodu z jednego pliku do innego, zachowując jednocześnie historię Git dla każdej linii? Chciałbym mieć możliwość użycia co najmniej git blame
na kodzie. Pomocne będzie również porównanie ze starszymi wersjami.Jak przenieść deklarację funkcji do innego pliku, ale zachować historię Git?
Uwaga: nie interesują mnie rozwiązania typu "obejście", które wymagałoby dodatkowych poleceń lub flag (takich jak --follow
) na kodzie, aby wyświetlić jego "starą" historię, dla której osoba przeglądająca historię musiałaby to wiedzieć. plik wymaga specjalnego traktowania. Szukam rozwiązania, które zapisuje niezbędne metadane tak, że normalne polecenia git, takie jak blame
, log
, diff
, i takie "just work" bez przedstawienia dodatkowych flag lub argumentów.
Czytałem dość fewposts szuka rozwiązań similar problems, ale kto by zająć się kwestią git blame
na poszczególnych liniach. Jednym z rozwiązań, który moim zdaniem zadziałałby, byłaby copy the file and its entire history, a następnie praca nad tym. Pytanie to pozostaje jednak bez satysfakcjonującej odpowiedzi.
Zauważ, że 'git blame' już śledzi linie kodu pomiędzy plikami, ale jeśli nazwy plików nie zostały zmienione, nadal musisz przekazać dodatkowe opcje, aby Git mógł wykonać wykrywanie ruchu/kopiowania, być może dlatego, że jest to kosztowna operacja. –
Załóżmy, że "Staś" zapisuje blok kodu i sprawdza go w Git, a następnie wycinam i wkleja blok do innego pliku. Teraz 'git winić' pokaże, że napisałem ten blok kodu. Szukam rozwiązania, które pozwoli mi przenieść kod, ale powinno pokazać, że Staś to napisał i kiedy. – dotancohen
Czy przeczytałeś dokumentację ['git blame'] (https://www.kernel.org/pub/software/scm/git/docs/git-blame.html), aby sprawdzić, czy już robi to, czego szukasz dla? –