Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: SVN wyciąganie plików o określonej rewizji
Forum PHP.pl > Inne > Komputery i oprogramowanie
strife
Witam,

Jak w temacie, jak wyciągnać z repozytorium, tylko te pliki, które są powiedzmy > r20. Tak aby wyciągnać tylko, te pliki większe od tego numeru rewizji, wszystkie inne chciałbym, aby zostały pominięte. Krótko mówiąc pracując na jakimś skrypcie chce stworzyć do niego patch'a, ale nie mam za bardzo pojęcia jak to zrobić.

Wiem, że istnieje coś takiego w svn jak patch, tyle że nie wiem jak się tego używa i do czego to służy. Szukałem trochę na google, ale nic konkretnego na ten temat nie znalazłem. Być może idę w złym kierunku, dlatego też prosiłbym o małe nakierowanie.

Będę wdzięczny za pomoc smile.gif

Również chętnie posłucham innych rozwiązań, jak Wy tworzycie patch'e, łatki do gotowych skryptów?

Pozdrawiam serdecznie.
Jabol
Pacze robie do katalogów a nie do plików i wygląda to tak (przykładowo):

diff -INNE_OPCJE -ruwbEN devilspie-0.20.2-org/src/ devilspie-0.20.2/src/ > applepie.patch
a potem wchodzę do katalogu gdzie jest katalog devilspie-0.20.2 i wpisuje
patch -OPCJE < applepie.patch

Wydaje mi się, że svn także czyta patche w tym formacie (diff/patch to standardowy zestawa do łatkowania).
strife
No dobrze, dziękuje za odpowiedź, ale mam jeszcze jedno małe pytanie, mianowicie Twój sposób wymaga dostępu do svn na serwerze prod. prawda? A ja chciałbym stworzyć sobie taką 'łatkę', którą będę mógł bez problemu wgrać na FTP bez patrzenia ręcznie, który plik jest większy od danej rewizji. Krótko mówiąc chce uzyskać, svn export, ale aby wydobyć tylko te pliki i katalogi, które są powyżej podanej rewizji. Jak wpiszę svn export -r 20 to uzyskam, również poprzednie pliki, które były np. z initial import'u (r1), a chce uzyskać tylko te, które są powyżej > r20. Mam nadzieję, że teraz dosyć jasno to napisałem.

Macie jakiś pomysł? Bo chyba nie będę musiał samemu tego pisać snitch.gif

Pozdrawiam serdecznie.
Cezar708
ja proponuję:

jeśli od dwudziestej rewizji to:

Kod
$ svn diff -r 20:HEAD > rev20.patch


w pliku rev20.patch masz patcha, którego po prostu wykonujesz za pomocą shellowego patch na serwerze produkcyjnym
strife
Cytat(Cezar708 @ 16.01.2008, 16:37:16 ) *
ja proponuję:

jeśli od dwudziestej rewizji to:

Kod
$ svn diff -r 20:HEAD > rev20.patch


w pliku rev20.patch masz patcha, którego po prostu wykonujesz za pomocą shellowego patch na serwerze produkcyjnym

Nie mam dostępu do svn na serwerze prod. Tylko FTP.

Inaczej wam to zobrazuję, mam sobie projekt, który zawiera 10,000 plików, w ciągu kilku miesięcy robię na nim poprawki, edytuje ok. 1400 plików. Oczywiście nie pamiętam co edytowałem, i chce exportować tylko te pliki, które są powyżej np. r1 (czyli powyżej Initial Importu). Chce uniknąć wgrywania na serwer wszystkich 10,000 plików, a wgrać tylko te, które edytowałem, jedynie te 1400. Mam nadzieję, że teraz jest już jasno biggrin.gif

Pozdrawiam serdecznie, i jeśli ktoś ma jakieś pomysły to śmiało. Może ja źle myślę, i rozwiązanie jest gdzie indziej.
DeyV
Niestety - gdy szukałem jakiegoś narzędzia do tego, z roku temu, to mimo intensywnych poszukiwań nic nie udało mi się znaleźć.

W sumie wszystko sprowadziło się do FTP i wrzucania plików modyfikowanych w ciągu określonego czasu wstecz (niektóre klienty to potrafią) lub monitorowani modyfikacji plików w określonym folderze "na żywo".

Z tego co wiem, jest jakiś skrypt, który potrafi wyciągnąć te zmiany z SVN, ale nie udało mi się znaleźć chodzącej wersji, którą dałbym radę uruchomić (głównie z braku czasu...)
(np. http://svn.haxx.se/dev/archive-2007-08/0318.shtml lub svn2web )
strife
Hej,

Znalazłem rozwiązanie problemu, lekko przerobiłem skrypt znaleziony w sieci i stworzyłem swoje svn2web, - to narzędzie pozwoli nam wyciągnąć pliki o określonej rewizji, przykład użycia:

Kod
svn2web 120:HEAD https://localhost/svn/project /home/user/temp/patch


Podajemy zakresy rewizji, w moim przypadku od 120 do aktualnej (HEAD), następnie ścieżkę do repo i gdzie mają te pliki wylądować. Jest to bardzo pomocne narzędzie ponieważ, wiedząc że na serwerze FTP mamy rewizję 100, natomiast po poprawkach mamy 120 - jesteśmy w stanie zaktualizować tylko te pliki, które się zmieniły bez nadpisywania innych smile.gif

Link: http://dev.strife.pl/svn2web.tar.gz

Pozdrawiam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.