problem sed && svn


2

Mam kopię roboczą SVN, w której wykonałem następujące polecenie

znajdź ./source * -type f -exec sed "s / @ wersja 0.5.3/@version 0.5.4 /" -i {} \;

wszystkie pliki są aktualizowane, ale svn nie rozpoznaje żadnych zmian podczas wykonywania jednego z nich

status svn ./source

svn diff ./source

svn commit ./source

Próbowałem też napisać skrypt, który powinien sprawdzić $? z sed i jest w porządku, „dotknij” pliku, aby zaktualizować, to mdate, ale wydaje się, że sed zawsze zwraca 0 -. -

co mogę teraz zrobić? -.-


Nie znam implementacji sed, która ma taką -Iopcję. Być może wybrałeś tę -iopcję. Czy to naprawdę polecenie, które wykonałeś?
Gilles

przepraszam, że to -i, sed jegosef działa tak, jak powiedziałem ...
Andreas Linden,

Odpowiedzi:


1

Problem polega na tym, że używasz find:

find dir1 -type f

Dopasuje wszystkie pliki w strukturze katalogów, w tym te znajdujące się w .svnkatalogach. Pliki w .svnto pliki używane do wykonania svn diffprzeciwko. Zasadniczo zmodyfikowałeś wszystkie kopie plików w drzewie, a nie tylko kopie robocze.

Wypróbuj tę składnię:

find ./source * -type f ! -path '*/.svn/*' -exec sed "s/@version 0.5.3/@version 0.5.4/" -I {} \;

nie potrzebuję kopii zapasowych, wszystko jest w svn ...
Andreas Linden

@zolex Nie rozumiesz. Wszystkie pliki */.svn/text-base/są kopiami zapasowymi plików na serwerze subversion. NIE Modyfikuj ich.
amfetamachina

btw, trzeba uciec przed kropkami w wyrażeniu regularnym wersji, ponieważ znajdzie inne rzeczy, takie jak 0x523
Andreas Linden
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.