Lista mailingowa + git format-patch
+ git apply
może generować autora! = Committer
W projektach takich jak jądro Linuksa, w których znajdują się łatki:
generowanie jednego nowego zatwierdzenia z innym autorem i podmiotem zatwierdzającym:
- to autor napisał łatkę
- podmiot odpowiedzialny jest tym, który jest opiekunem projektu i który połączył łatkę
Zobacz na przykład tę losowo wybraną poprawkę i odpowiadający jej zatwierdzenie:
Interfejsy internetowe Git, takie jak GitHub i GitLab, mogą generować autor!
Ponieważ Git (Hub | Lab) przechowuje zarówno repozytoria nadrzędne, jak i widełkowe na tej samej maszynie, mogą one automatycznie robić wszystko, co można zrobić lokalnie, w tym:
Utwórz zatwierdzenie scalania.
Nie generuje autora! = Committer.
Utrzymuje SHA lub nowe zatwierdzenie nienaruszone i tworzy nowe zatwierdzenie:
* Merge commit (committer == author == project maintainer)
|\
| * Feature commit (committer == author == contributor)
|/
* Old master (random committer and author)
Historycznie była to pierwsza dostępna metoda na GitHub.
Lokalnie odbywa się to za pomocą git merge --no-ff
.
Powoduje to dwa zatwierdzenia na żądanie ściągnięcia i zachowuje rozwidlenie w historii git.
rebase na górze master
GitHub włamuje się również do commits, aby ustawić committer == ktokolwiek nacisnął przycisk scalania. Nie jest to obowiązkowe i nie jest nawet domyślnie wykonywane lokalnie przez git rebase
, ale daje rozliczalność opiekunowi projektu.
Drzewo git wygląda teraz następująco:
* Feature commit (committer == maintainer, author == contributor)
|
* Old master (random committer and author)
który jest dokładnie taki jak w git apply
łatkach e-mail.
Obecnie na GitHub:
- metodę wybierasz podczas scalania za pomocą menu rozwijanego na przycisku scalania
- metody mogą być włączone lub wyłączone w ustawieniach repo przez właściciela
https://help.github.com/articles/about-merge-methods-on-github/
Jak ustawić moduł zatwierdzający nowego zatwierdzenia?
Najlepsze, co mogłem znaleźć, to użycie zmiennych środowiskowych do zastąpienia obiektu polecającego:
GIT_COMMITTER_NAME='a' GIT_COMMITTER_EMAIL='a' git commit --author 'a <a>'
Jak uzyskać datę zatwierdzenia i zatwierdzenia danego zatwierdzenia?
Domyślnie wyświetlane są tylko dane autora git log
.
Aby zobaczyć datę zleceniodawcy, możesz:
sformatuj dziennik specjalnie w tym celu:
git log --pretty='%cn %cd' -n1 HEAD
gdzie cn
i cd
za Committer Name
iCommitter Date
użyj fuller
predefiniowanego formatu:
git log --format=fuller
Zobacz także: Jak skonfigurować „git log”, aby wyświetlał „datę zatwierdzenia”
zejdź na niski poziom i pokaż wszystkie dane zatwierdzenia:
git cat-file -p HEAD
Jak ustawić datę zatwierdzenia nowego zatwierdzenia?
git commit --date
ustawia tylko datę autora: dla daty osoby odpowiedzialnej najlepiej znalazłem zmienną środowiskową:
GIT_COMMITTER_DATE='2000-01-01T00:00:00+0000' git commit --date='2000-01-01T00:00:00+0000'
Zobacz także: Jaka jest różnica między autorem a autorem w Git?
Jak Git przechowuje wewnętrznie autora kontra autora?
Zobacz: Jaki jest format pliku obiektu git commit?
Zasadniczo zatwierdzenie jest plikiem tekstowym i zawiera dwa pola oddzielone liniami:
author {author_name} <{author_email}> {author_date_seconds} {author_date_timezone}
committer {committer_name} <{committer_email}> {committer_date_seconds} {committer_date_timezone}
To wyjaśnia, że oba są dwoma całkowicie niezależnymi wpisami danych w obiekcie zatwierdzenia.