Błąd Gerrit, gdy brakuje Change-Id w komunikatach commit

Skonfigurowałem gałąź w zdalnym repozytorium i zrobiłem commity na tej gałęzi. Teraz chcę połączyć zdalną gałąź z zdalnym master.

Zasadniczo następujące są moje operacje:

  1. Oddział kasowy
  2. checkOut master
  3. połącz gałąź i napraw błędy scalania
  4. commit
  5. push origin HEAD: refs / for / master

Ale otrzymuj komunikaty o błędach w 5. kroku:

remote: Resolving deltas:   0% (0/12)

remote: ERROR: missing Change-Id in commit message
...

remote: Change-Id: I55862204ef71f69bc88c79fe2259f7cb8365699a

To ssh://[email protected]:29418/hello_git
 ! [remote rejected] HEAD -> refs/for/master (missing Change-Id in commit message)

11 answers

Sprawdź, czy Twoje commity mają Change-Id: ... w swoich opisach. Każdy commit powinien je mieć.

Jeśli nie, użyj git rebase -i, aby przeformułować komunikaty o zatwierdzeniu i dodać odpowiednie identyfikatory zmian(zwykle jest to SHA1 pierwszej wersji zatwierdzonego zatwierdzania).

Na przyszłość powinieneś zainstalować commit hook, który automatycznie dodaje wymagany identyfikator zmiany.

Wykonaj scp -p -P 29418 username@your_gerrit_address:hooks/commit-msg .git/hooks/ w katalogu repozytorium lub pobrać je z http://your_gerrit_address/tools/hooks/commit-msg i skopiuj do .git / hooks

 61
Author: Rafał Rawicki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-13 11:25:43

Spróbuj tego:

git commit --amend

Następnie skopiuj i wklej Change-Id: I55862204ef71f69bc88c79fe2259f7cb8365699a na końcu pliku.

Zapisz i wciśnij jeszcze raz!

 24
Author: vailaya shreesha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-05 15:07:16

Jeśli chcesz dodać Change-Id do wielu commitów, możesz pobrać hook z serwera Gerrit i uruchomić te polecenia, aby dodać Change-ID do wszystkich commitów, które ich potrzebują na raz. Poniższy przykład naprawia wszystkie zmiany w bieżącej gałęzi, które nie zostały jeszcze wypchnięte do gałęzi upstream.

tmp=$(mktemp)
hook=$(readlink -f $(git rev-parse --git-dir))/hooks/commit-msg
git filter-branch -f --msg-filter "cat > $tmp; \"$hook\" $tmp; cat $tmp" @{u}..HEAD
 7
Author: Matt Cowell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-01 22:17:45

Jest tak dlatego, że Gerrit jest skonfigurowany tak, aby wymagał Change-Id w wiadomościach commit.

Http://gerrit.googlecode.com/svn-history/r6114/documentation/2.1.7/error-missing-changeid.html

Musisz zmienić wiadomości każdego commita, który naciskasz, aby uwzględnić identyfikator zmiany (używając git filter-branch) i dopiero wtedy push.

 4
Author: manojlds,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-13 04:30:51

Możesz być adminem wykonującym jednorazowe push bezpośrednio do refs/changes/<change_number>.

Na przykład, gdy commit bez Change-Id wyląduje w Subversion, wyciągasz go z Subversion używając git-svn i chcesz go zarchiwizować jako patchset Gerrit do zmiany Gerrit.

Jeśli tak, możesz przejść do strony ustawień projektu (http: / / [ścieżka instalacji] / # / admin/projects / [project-id]) i tymczasowo zmienić wartość "Require Change-Id in commit message" Na False.

Nie zapomnij następnie zmień go z powrotem na Inherit lub True!

 2
Author: Ivan Vučica,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-13 01:16:17

Sprawdź swój Git repo przed zatwierdzeniem

gitrepo/.git/hooks/commit-msg

Jeśli ten plik nie znajduje się w tej lokalizacji, otrzymasz błąd "Brak ID zmiany w komunikacie zatwierdzania" .

Aby to rozwiÄ ... zaÄ ‡ wystarczy skopiowaÄ ‡ wklejenie Hooka zatwierdzania.folder git.

 1
Author: Mahi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-22 11:49:52

Też dostałem ten Komunikat o błędzie.

A to, co sprawia, że uważam, że warto tutaj udzielić odpowiedzi, to to, że odpowiedź od @ Rafała Rawickiego jest dobrym rozwiązaniem w niektórych przypadkach, ale nie we wszystkich okolicznościach. przykład, który spotkałem:

1.run "git log" we can get the HEAD commit change-id

2.we also can get a 'HEAD' commit change-id on Gerrit website.

3.they are different ,which makes us can not push successfully and get the "missing change-id error"

Rozwiązanie:

0.'git add .'

1.save your HEAD commit change-id got from 'git log',it will be used later.

2.copy the HEAD commit change-id from Gerrit website.

3.'git reset HEAD'

4.'git commit --amend' and copy the change-id from **Gerrit website** to the commit message in the last paragraph(replace previous change-id)

5.'git push *' you can push successfully now but can not find the HEAD commit from **git log** on Gerrit website too

6.'git reset HEAD'

7.'git commit --amend' and copy the change-id from **git log**(we saved in step 1) to the commit message in the last paragraph(replace previous change-id)

8.'git push *' you can find the HEAD commit from **git log** on Gerrit website,they have the same change-id

9.done
 0
Author: kagb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-04 08:31:29

Rozwiązaliśmy ten problem dziś rano poprzez ponowne klonowanie repozytorium i ponowne zastosowanie zmian. Jest to najprostszy sposób, aby ponownie zsynchronizować kopię lokalną z Gerrit. Jak zawsze najpierw stworzyliśmy kopię zapasową.

Chociaż istnieje wiele innych szalenie skomplikowanych rozwiązań, często korzystne jest proste podejście, aby uniknąć pogorszenia sytuacji.

 0
Author: Brad Hein,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-09 14:14:16

Musisz postępować zgodnie z poniższymi instrukcjami w 2 krokach:

[Problem] remote: Podpowiedź: aby automatycznie wstawić Change-Id, zainstaluj hook:

1) gitdir=$(git rev-parse --git-dir);

2) scp -p -P 29418 <username>@gerrit.xyz.se:hooks/commit-msg ${gitdir}/hooks/

Normalnie $gitdir =".git". Musisz zaktualizować nazwę użytkownika i link Gerrit.

 0
Author: Kashan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-30 13:26:09

1) gitdir=$(git rev-parse --git-dir);

2) scp -p -P 29418 <username>@gerrit.xyz.se:hooks/commit-msg ${gitdir}/hooks/

A) Nie wiem jak wykonać krok 1 w windows więc pominąłem go i użyłem hardcoded path w step 2 scp -p -P 29418 <username>@gerrit.xyz.se:hooks/commit-msg .git/hooks/

B) W przypadku wystąpienia błędu poniżej, ręcznie utwórz katalog "Hooki" w .git folder

protocol error: expected control record

C) Jeśli masz submodule powiedzmy "XX", musisz tam powtórzyć krok 2 i tym razem zastąpić ${gitdir} ścieżką submodules

D) w przypadku, gdy scp nie jest rozpoznawany przez windows podaj pełną ścieżkę scp

"C:\Program Files\Git\usr\bin\scp.exe"

E) .folder git jest obecne w Twoim projekcie repo i jest to ukryty folder

 0
Author: Ravi Yadav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-09 04:29:21

Może się to zdarzyć również, jeśli masz takie ograniczenie:

Proszę wprowadzić komunikat o zatwierdzeniu zmian. Linie zaczynające się od ' # ' będą ignorowane, a pusty komunikat przerywa commit.

A Ty mnie lubisz: napisz wiadomość zatwierdzającą zaczynającą się od"#".....

Miałem ten sam błąd, ale już miałem commit-msg i zrobiłem rebase i w ogóle. Bardzo głupi błąd: d

 -1
Author: ladybug23,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-27 05:02:59