Rozwiązywanie konfliktów: jak automatycznie akceptować „ich” zmiany?


97

Podczas scalania sprzecznych zmian za pomocą hg mergeMercurial wstawia zestaw znaczników do plików, które mają zostać scalone w mojej kopii roboczej, w następujący sposób:

<<<<<<< local
  version = 0.2
=======
  version = 0.1
>>>>>>> other

Następnie ręcznie edytuję wszystkie pliki oznaczone jako U z listy utworzonej przez, hg resolve --all -la następnie mówię mercurialowi, że rozwiązałem je przezhg resolve -m file1 file2 file3 ...

W wielu sytuacjach chciałbym jednak zaakceptować tylko moje lub ich jedyne zmiany w niektórych sprzecznych plikach. Myślę o stworzeniu dwóch prostych skryptów sed / awk / o jakiejkolwiek nazwie accept-theirs.shi accept-my.shczy jest na to „właściwy” sposób?

Odpowiedzi:


166

Posługiwać się

hg resolve -t internal:other --all

zaakceptować theirsi

hg resolve -t internal:local --all

akceptować yours


Dziękuję Ci bardzo! Nie rozumiem, co oznacza @djc, ale Twoje rozwiązanie działa jak urok.
psihodelia

@psihodelia djc powiedział prawie to samo, spróbuj hg help merge-tools(connectetools jest aliasem w ostatnich wersjach)
MGP

6
Na marginesie, pseudonim to:[alias] mine = resolve -t internal:local theirs = resolve -t internal:other
Melvyn

1
To są trzy linijki do dodania do własnych .hgrc, dla początkujących: [alias]więc mine = resolve -t internal:local, więc theirs = resolve -t internal:other. Następnie możesz użyć hg mine some_file.pylub hg theirs -a(dla wszystkich)
Tobia

1
Od phab.mercurial-scm.org/D4379 może być również konieczne dołączenie --re-mergeflagi (np. hg resolve -t internal:other --re-merge --all)
Ethan Koenig

23

Spróbuj tego:

hg merge --tool 'internal:other'

Zobacz także, hg help merge-toolsaby uzyskać więcej informacji.


1
Lub resolvedla pojedynczych plików / ponownego wykonania. (Również cytaty wokół internal:othersą niepotrzebne.)
Chris Morgan
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.