Chciałbym móc użyć diff i poprawki, aby zapisać nowe linie do pliku. Aby wyjaśnić, co mam na myśli:
Oryginalny plik: test1.repo
wyklucz = mongo *
exclude = sqlite *
exclude = postgresql *
Nowy plik: test2.repo
wyklucz = mongo *
exclude = postgresql *
wyklucz = mysql *
Więc uruchamiam polecenie, diff -u test1.repo test2.repo > repo.patch
aby znaleźć różnice, dość proste. Patrząc na repo.patch
właśnie utworzony plik, widzę wynik:
wyklucz = mongo *
-exclude = sqlite *
exclude = postgresql *
+ exclude = mysql *
Jeśli użyję tej łatki w takim stanie, zostanie ona nadpisana tym, co faktycznie zawiera tylko dane, które mam test2.repo
. Czy istnieje sposób, aby łatka zapisywała tylko nowe wiersze ( cokolwiek zaczynające się od znaku + )? Chciałbym dodać wiersze do oryginalnego repozytorium, ale nie niszczyć żadnych dostosowań, które już zrobili w swoim pliku.
--
jakiegoś powodu. Osobiście po prostu ręcznie edytuję łatkę, aby rozwiązać konflikty.
cat <(head -n 1 repo.patch) <(grep -ve '^-' repo.patch) | patch
aby rozwiązać problem wskazany przez @frostschutz. Ale przy tych zmodyfikowanych plikach łatek pojawia się błąd patch: **** malformed patch at line 9:
(to jest EOF), ponieważ musisz także zmodyfikować @@ -1,4 +1,6 @@
linie ?!
sort -u test1.repo test2.repo
może również działać.
sed 's/^-\([^-]\{2\}\)/ \1/'
?