2013-11-20 19 views
15

Użytkownicy A i B dokonują modyfikacji (na różnych gałęziach funkcji) do konkretnego repo.Jak sprawić, by Jenkins zobaczył zatwierdzenie Git merge jako zmianę?

Użytkownik A scala zmiany w gałąź pomostową. Jenkins buduje gałąź pomostową i kończy się sukcesem.

Użytkownik C (menedżer wydania dla zespołu użytkownika B) scala zmiany użytkownika B w gałąź przemieszczania. Jednak coś w scaleniu idzie nie tak i nie zostaje zauważone, na przykład konflikt, który nie został rozwiązany poprawnie.

Jenkins tworzy gałąź pomostową i kończy się niepowodzeniem z powodu złego scalenia.

Użytkownicy A i B są powiadamiani o niepowodzeniu kompilacji, ponieważ ich kod był częścią scalenia, mimo że ich zmiany nie zawiodły. Użytkownik C nigdy nie otrzymuje powiadomienia o niepowodzeniu, mimo że jego złe połączenie było przyczyną zerwania budowy.

Czy istnieje sposób:

  1. Bo Jenkins zobowiązuje się traktować jako scalania zmian? (Istnieje bardzo realna możliwość, że kod zostanie zmodyfikowany podczas scalania!)
  2. Poinformować użytkownika C (jako łącznika) wraz z użytkownikami A i B?

Używamy wtyczek Git i Email-ext dla Jenkins.

Edytuj, kilka miesięcy później: W dalszym ciągu masz problemy z tym - nawet w sytuacji, w której osoba, która zrobiła scalanie nie wprowadzać łamanie zmian, nadal byłoby miłe dla nich być powiadomiony, że build udało (lub nie powiodło się).

+2

Zachęcam do przeszukania ich trackera problemów, https://issues.jenkins-ci.org/secure/IssueNavigator.jspa, a jeśli go nie ma, zrób to. – user3352495

+1

Wewnętrzna wtyczka Git używa komendy "git whatchanged", która "jest zasadniczo taka sama jak git-log, ale domyślnie wyświetla tekst wyjściowy surowego formatu i pomija połączenie". Tak jest z projektem. – izzekil

+1

Zgadzam się z @ user3352495 na temat zgłoszenia problemu ze swoim [trackerem] (http://issues.jenkins-ci.org/secure/IssueNavigator.jspa?mode=hide&reset=true&jqlQuery=project+%3D+JENKINS+AND+status+ in +% 28Open% 2C +% 22In + Postęp% 22% 2C + Ponownie otwarte% 29 + AND + komponent +% 3D +% 27git-plugin% 27). Mam ten sam problem. Przeszukałem tracker i nie znalazłem odpowiadającego mu problemu, więc sam utworzyłem [nowy numer] (https://issues.jenkins-ci.org/browse/JENKINS-28907). – mattgately

Odpowiedz

-3

Problem z tym, co opisujesz, oznacza, że ​​otrzymasz dodatkowe zatwierdzenie w historii git.

Jeśli użytkownik A i użytkownik B dokonują zmian, które muszą zostać połączone, to po scaleniu historia git powinna pokazać użytkownikowi SHA zmiany użytkownika i użytkownika B.

Jeśli mam kontroli historię po userC połączyła zmiany UserB, wtedy tak naprawdę nie chcą zobaczyć extra git commit mówi mi, że userC połączyła UserB na popełnić - ten ostatni jest już obecny w git historia.

A jeśli userC scalony jest zalogowany w historii git - w jaki sposób byłby zalogowany? Jak wyglądałaby różnica?

Myślę, że problem w opisywanym scenariuszu polega na tym, że użytkownik userC nie zwracał wystarczającej uwagi podczas łączenia, aby zauważyć błąd połączenia. Dobre oprogramowanie nie wyklucza konieczności posiadania kompetentnych programistów.

+1

Poza tym scalanie * jest * rejestrowane jako zatwierdzenie, z różnicą. – GalacticCowboy

1

Możesz spróbować wymusić zawsze opcję no fast-forward merges (--no-ff), a wszystkie scalenia spowodują nawet scalenie-commit (nie tylko w przypadku konfliktów).

Generuje również bardziej czytelny i czytelny dziennik git.

BTW sprawdź, czy masz ostatnią wersję Jenkinsa Git plugin (wcześniej miały issues).