2011-02-16 15 views
20

Jestem przyzwyczajony do Mercurial mq extension do utrzymywania zestawu niestandardowych poprawek nad upstream. Mogą być publikowane jako oddzielne repozytorium poza wersją. Teraz w git używam prywatnych oddziałów i rebase i działa dobrze, dopóki nie chcę udostępniać moich łat innym osobom.Co to jest metoda Git do publikowania kolejki poprawek?

W serwisie Mercurial kolejka łatek jest niezależnym repozytorium i może być publikowana w zwykły sposób. Bitbucket oferuje nawet funkcję kolejki poprawek, aby połączyć ją z repozytorium nadrzędnym. W Git, jeśli opublikuję prywatną gałąź z moimi łatkami, stracę możliwość ich ponownego podziału (chyba, że ​​rozbiję scalenia), ale łatki muszą być aktualizowane od czasu do czasu.

Od another SO question Znalazłem, że w świecie Git StGit jest proponowany jako odpowiednik dla mq. Jest podobny w użyciu do mq, ale jak mogę opublikować kolejkę łatki z StGit?

(stg publish wydaje się być indended stworzyć tylko nowy „scalić domowych” oddział, nie publikować same łaty)

Jakie są inne podejścia do publikowania kolejki poprawki w Git?

+6

Czy jest jakiś powód, dla którego nie można po prostu opublikować oddział, z założeniem, że to nie jest zakończone i można rebased dalej? – Cascabel

+0

Cóż, to zerwie połączenia dla każdego, kto spróbuje pobrać/pobrać z niego, prawda? W takim razie, jaki jest sens opublikowania go jako repo kontrolowanego wersji, jeśli nie pozwala na płynne przejście do ostatniej wersji? – sastanin

+2

@jetxee: Chodzi o to, że: jeśli można go dalej opierać, nie * scalaj go z żadnymi ważnymi gałęziami. Poszukujesz i pracujesz nad nim w izolacji. – Cascabel

Odpowiedz

7

Podsumowując odpowiedzi i komentarze. Z git istnieją dwa podejścia do publikowania małych niestandardowe modyfikacje na zdalny upstream:

  • zapomnieć rebase publikuje gałęzi i nowych scala jako niezbędnego
  • Oświadczamy, że oddział jest podścielanie, po prostu zmieniają bazę i publikują (pro: czysta historia, przeciwwskazania: może być ból być stosowany w sposób ciągły przez kogoś innego, na przykład: linux-next)

dotychczas czysty kolejka łata workflow nie wydaje się być wykonalne z git, ale wydaje się guilt być bardzo blisko do mq, nawet nam es poleceń. Nie pozwala na kontrolowaną przez wersję (i możliwą do opublikowania) kolejkę poprawek.

-1

AFAICT z podanego linku o Mq, ma o tym samym problemie publikacyjnym co git rebase?

W sumie myślę, że publikowanie twojego oddziału z ostrzeżeniem, że jest to oddział do zmiany bazy, jest najlepszą opcją. Na przykład w ten sposób utrzymywana jest gałąź linux-next.

+1

Pozwala to na umieszczanie łat pod kontrolą wersji w repozytorium _separate_, więc główne repozytorium pozostaje nienaruszone, a repozytorium z poprawkami może zostać opublikowane niezależnie. Nie ma więc takich samych problemów jak 'git rebase', ponieważ nie przepisuje historii (w rzeczywistości wcale jej nie zmienia). – sastanin

+0

@jetxee, ok, więc jest to sposób na opisanie gałęzi "niestabilnej", ostrzegając, że jest niestabilna i zmienia się? Brzmi jak coś dobrego. – Rawler

+1

to sposób na zarządzanie zestawem poprawek, które nie zostały jeszcze zatwierdzone do głównej linii; można szybko zastosować (qpush) i anulować (qpop), zmienić kolejność i zmienić. Same łatki są zarządzane jako proste pliki. Po ich zastosowaniu cała kolejka łat wygląda jak gałąź do merkurialu, gdy nie są stosowane repozytorium wygląda, jakby nie istniało. Dobrze jest zachować prywatne dostosowania, rozwijać złożone funkcje (jak w przypadku rebase) lub eksperymentować. StGit i Guilt wydają się robić to samo dla Gita. – sastanin

1

Biorąc pod uwagę komentarze, wydaje się podejście bardziej lub mniej równoważne mq Mercurial zostałaby użyciu winy. W przeciwieństwie do mq, wina nie zapewnia bezpośrednio interfejsu dla "repozytorium łatek", ale można ręcznie przekształcić .git/patches/<branch> w repozytorium .git.

0

Istnieje rozszerzenie git o nazwie git-series, które używa git do utrzymania wersjonowanej kolejki poprawek. Pozwala to na podobną funkcjonalność do mq, ponieważ można utrzymać wiele serii (odpowiednik wielu kolejek hg), łatki refaktorów oparte na sprzężeniu zwrotnym i zatwierdzić serię do git. Jest najbliżej mq, ale jest na tyle różny, że można spodziewać się strzelania na stopę.