2011-03-24 18 views
5

Celem wtyczki Hg mq ma być w stanie dokonać idealny zobowiązuje się do repozytorium, nie myląc zmiany wprowadzone w roztargniony ADHD wywołanego wędrówki przez kod;Co zrobić, gdy zbyt wiele zmian w jednej poprawce w hg mq kolejce poprawek?

Na przykład ....

Pracuję nad bug x kiedy zauważy błędu y i rozpocząć pracę nad nim zamiast. W tym momencie powinieneś utworzyć nową poprawkę w kolejce poprawek, aby nie mylić zmian, gdy jest ona przypisana do twojego repozytorium.

Teraz załóżmy na chwilę, że zapomni zrobić nową łatkę oraz w procesie hg qrefresh. Później, gdy zdasz sobie sprawę ze swojego błędu, chcesz oddzielić zmiany z jednej łatki na dwie.

Zdaję sobie sprawę, że ma do czynienia z edytując plik poprawki (i nowy patch) w kolejce, aby oddzielić zmiany w oddzielnych łat i później popełni. Jednak nie jestem jeszcze wprawny w edycji plików łatek diff.

Gdzie mogę dowiedzieć się na ten temat? I jak można to osiągnąć?

Odpowiedz

0

Mam alias Shell, viq="vim $(hg root)/.hg/patches/", że mogę używać tylko do tych sytuacji!

Po prostu uruchomię viq, aby ściągnąć łatki, następnie ręcznie edytuję różnice i przenieś porcje na inne łatki, stosownie do potrzeb.

Wolę to od metod interaktywnych (np. git add -i), ponieważ nie czuję się tak bezpiecznie, pracując z interaktywnym monitorem, ponieważ pracuję od mojego edytora (wiem, że mój redaktor tworzy kopie zapasowe, ma trywialne cofanie itp.)).

+0

Nie wyjaśniłem tego w moim poście, ale wiem, gdzie znajdują się pliki z łatami, ale po prostu nie jestem dobry w szczegółach edycji pliku poprawki. – leeand00

+0

Ah, przepraszam - nie chciałem sugerować, że nie wiesz, gdzie one są. Mówię tylko, że biorąc pod uwagę wszystkie dostępne mi opcje, wolę to zrobić. –

+0

Ponadto, dopóki edytujesz na poziomie [hunk level] (http://en.wikipedia.org/wiki/Diff#Unified_format), jest to naprawdę proste - możesz przesuwać porcje tak, jak chcesz, tak długo jako poprawny nagłówek (np. '--- a/foo \ n +++ b/foo') znajduje się gdzieś nad przesuniętymi bryłami. –

3

Inną opcją (zakładając, że działa na platformie) jest w wersji 2.0 z TortoiseHg. "Niepoprawnie" nazwany program narzędziowy Shelve umożliwia przenoszenie porcji i plików pomiędzy łatami lub do katalogu roboczego. Jest dostępny dla systemów Windows, Linux i ewentualnie OSX.

http://tortoisehg.bitbucket.io/

2

można aktywować record extension, dodając do .hgrc następujące linie:

[extensions] 
hgext.record = 

Możesz wyczyścić swoją aktualną łatę z

hg qrefresh nothing 

(zauważ, że "nothing "jest po prostu losowym ciągiem znaków: argumenty do qrefresh to lista plików, które muszą być zawarte w bieżącym łatka, więc wszystko, co nie jest nazwą zmodyfikowanego pliku, zrobi - ja zwykle używam "0")

Teraz z hg qrecord <patchName> możesz interaktywnie wybrać, które zmiany muszą przejść w nowej poprawce. Pozostałe zmiany można następnie dodać do innej łatki za pomocą qnew lub innej qrecord. Możesz wreszcie użyć qpop, qfold lub edytować .hg/patches/series, aby scalić i zmienić kolejność poprawek.

+0

To brzmi interesująco ... Muszę to obejrzeć. * Pozdrawiam! * – leeand00

+1

Również 'hg qcrefresh' (część rozszerzenia Crecorda) pozwala wybierać poszczególne linie, jeśli łaty automatyczne są zbyt grube. –