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ć? -.-

Andreas Linden
źródło
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 {} \;
amfetamachina
źródło
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