2012-01-05 7 views
16

System Gerrit jest używany tylko przez nas kilka osób. Po wprowadzeniu zmiany A jej stan to: "Wysłane, Połącz oczekujące". Lista zmian na "otwartej" stronie internetowej. Zauważyłem też, że ta Zmiana miała zależność od kolejnej zmiany B (której status jest porzucony).Gerrit Change ma status: przesłany, scalić w toku, jak go rozwiązać?

  1. Jak zrobić listę A na stronie "Połączone"?
  2. Jak sprawić, by B zniknęło, więc A nie ma już zależności od B?
+1

Zapytałem [podobne pytanie] (http://stackoverflow.com/q/20496959/1469208) i otrzymałem bardziej szczegółowe (przydatne dla początkujących) odpowiedzi. – trejder

Odpowiedz

21

Jeśli zmiana A ma zależność B, wówczas A nie może zostać połączone, dopóki B nie zostanie połączone. Ponieważ opuściłeś B, Gerrit nie połączy automatycznie A.

To, co musisz zrobić, to zmodyfikować A (być może używając git rebase), aby nie zależało już od B i ponownie wprowadzić zmianę do Gerrit.

+0

Następnie, jak sprawić, by B zniknęło ze strony internetowej? – gemfield

+0

Porzuciłeś już B. Co jeszcze chcesz z tym zrobić? –

+1

@GregHewgill Myślę, że miał na myśli to, jak usunąć wpis zmiany B z Gerrit, jakby nigdy nie istniał (więc nie jest wyświetlany w interfejsie użytkownika Gerrit Web w dowolnym miejscu). Nie sądzę, że jest to możliwe z Gerrit Web UI, ponieważ istnieje przycisk "Przywróć zmianę" na Opuszczonych elementach zmiany, który pozwala przywrócić zmianę z porzuconego stanu. Jeśli nadal chcieliśmy usunąć, mogliby to zrobić ręcznie z backendu (chociaż nigdy go nie wypróbowałem). – Vikram

1

Co twierdzi firma Greg, automatyczne scalanie nie jest możliwe. Możliwe jest włączenie A tylko za pomocą opcji "Wiśnia pick" Gerrita (zasadniczo połączenie ręczne). Niestety nie spowoduje to usunięcia statusu Gerrit "Połącz oczekujące". Zazwyczaj piszę komentarz do tego efektu, jeśli współtwórca nie może mieć problemów z ponownym umieszczeniem.

0

miałem ten sam problem "Zgłoszony, Merge pending" bez uzależnienia lub konfliktu. Szybka korekta polega na przeglądaniu wszystkich otwartych pozycji i sprawdzaniu, czy istnieją inne zatwierdzenia w statusie "Wysłane, Połącz oczekujące". Jeśli tak, porzuć je wszystkie.

Następnie git commit --amend -m "twoje oryginalne komentarze" i git push ponownie, tym razem możesz połączyć swoją poprawkę.

2

FYI. Miałem ten sam problem z "Zgłoszone, Połącz oczekujące", gdy użytkownik naciśnie dwa razy na tej samej stronie (dwukrotnie kliknęła przycisk "Prześlij"). Stało się to w Gerrit 2.11.

Błąd w dzienniku wygląda

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:  Duplicate entry '5173-2-1' for key 'PRIMARY' 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 

Przed złożeniem było tylko 1 commit (zmiany hasła). Ale po podwójnym naciśnięciu są 2 zatwierdzenia. Drugi to nowy komunikat zatwierdzenia i status "wysłano, łączę oczekujące".

Kiedy usunięto wszystkie informacje o drugi popełnienie:

$ ssh -p 29418 [email protected] gerrit gsql 
gerrit> delete from `patch_set_approvals` where change_id=5173 and patch_set_id=2; 
gerrit> delete from `patch_set_ancestors` where change_id=5173 and patch_set_id=2; 
gerrit> delete from `patch_sets` where change_id=5173 and patch_set_id=2; 

on oznaczony jako zintegrowany użytkownika Gerrit Code Review.

0

I wobec tego problemu, bo popchnął tag nazwa oddziału:

git tag x.y.z HEAD 
git push -f origin x.y.z:master 

Więc lepiej pchnąć oddział Zamiast

git tag x.y.z HEAD 
git push -f origin HEAD:master 

ten sposób Gerrit jest w stanie ponownie połączyć moje oczekujących łatek.

0
  1. Porzuć swój impuls z Gerrit.

Na Terminalu:

  1. git log
  2. git resetowania HEAD ~ n

gdzie n oznacza liczbę popełnić od góry na liście zatwierdzeń wygenerowany na terminalu od kroku 2

  1. git add.
  2. git commit -m "Treść wiadomości"
  3. git wypychania

teraz scalić popełnić na Gerrit.