Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Subversion] svn commit
Forum PHP.pl > Inne > Komputery i oprogramowanie
starach
Witam. Postanowiłem przerzucić się ze zwykłego kopiowania katalogu projektu i wpisywania mu daty jako prefiksu na Subversion. Usunięcie katalogu z drzewa projektu powoduje zaparcie się rękami i nogami SVN przed zatwierdzeniem zmian. Jak wymusić na nim ich potwierdzenie mimo usuniętego katalogu?

Cytat
D:\Projekty\www\app1>svn commit -m "Wywalenie niepotrzebnego katalogu."
svn: Zatwierdzenie nie powiodło się (szczegóły poniżej):
svn: Brak katalogu 'D:\Projekty\www\app1\test1'
svn: Brak katalogu 'D:\Projekty\www\app1\test1'


Cytat
D:\Projekty\www\app1>svn help commit
commit (ci): Zatwierdź zmiany dokonane na kopii roboczej poprzez zapisanie ich w
repozytorium.
Użycie: commit [ŚCIEŻKA...]

Zatwierdzenie wymaga podania opisu zmian (może być pusty). Jeśli
nie podano go za pośrednictwem opcji --message lub --file, zostanie
uruchomiony edytor tekstu. Jeśli którykolwiek z podanych argumentów
polecenia zawiera zablokowane obiekty, to po udanej operacji
zatwierdzania blokady na tych obiektach będą zdjęte.

Poprawne opcje:
-q [--quiet] : wypisz nic lub tylko podsumowanie
-N [--non-recursive] : przestarzałe; spróbuj --depth=files lub --depth=immediates
--depth ARG : ogranicz operację przez głębokość ARG ('empty', 'files',
'immediates' lub 'infinity')
--targets ARG : potraktuj zawartość pliku ARG jako dodatkowe argumenty
--no-unlock : nie usuwaj blokad dla obiektów
-m [--message] ARG : podaj argument określający opis zmian
-F [--file] ARG : czytaj opis zmian z pliku ARG
--force-log : wymuś uznanie opisu zmian za poprawny
--editor-cmd ARG : użyj ARG jako polecenia uruchamiającego edytor tekstu
--encoding ARG : zakładaj, iż parametry są podane w kodowaniu ARG
--with-revprop ARG : określ atrybut ARG wersji w nowej wersji
przy użyciu formatu nazwa[=wartość]
--changelist ARG : działaj tylko na członkach listy zmian ARG
[aliasy: --cl]
--keep-changelists : nie usuwaj list zmian po zatwierdzeniu zmian

Globalne opcje:
--username ARG : użyj ARG jako nazwy użytkownika
--password ARG : użyj ARG jako hasła
--no-auth-cache : nie zapamiętuj danych uwierzytelniających
--non-interactive : nie zadawaj żadnych interaktywnych pytań
--config-dir ARG : pobierz konfigurację użytkownika z katalogu ARG
c3zi
Najpierw zrób: svn delete katalog
Potem commita.
Następnie usuń ręcznie ten katalog i już nie będzie go w repozytorium.
starach
Dzięki. Fajnie by było jakbyś mi jeszcze powiedział jak pobrać z serwera SVN poprzednią wersję pliku, ale zapisać ją pod inną nazwą. Tak żeby zmodyfikowany plik na stacji roboczej nie został nadpisany przez starszy plik.

Powiedzmy że usunąłem z klasy metodę i chcę ją przerobić na oddzielną klasę. Kiedy już struktura jest zrobiona chcę sobie przypomnieć implementacje skasowanej metody. Dlatego właśnie przydałaby się możliwość ściągnięcia pliku z repozytorium, ale pod inną nazwą niż oryginalna. No chyba że istnieje jakieś inne rozwiązanie.
Cezar708
Cytat
Dzięki. Fajnie by było jakbyś mi jeszcze powiedział jak pobrać z serwera SVN poprzednią wersję pliku, ale zapisać ją pod inną nazwą. Tak żeby zmodyfikowany plik na stacji roboczej nie został nadpisany przez starszy plik.


zawsze możesz aktualny plik zapisać pod inną nazwą i zrobić svn up -rXXX gdzie XXX to numer revizji, który CIę interesuje na przykład:
Kod
$ mv plik.php  plik.back.php
$ svn up -r 123 plik.php


pozdrawiam
dr_bonzo
To powyzsze nadpisze ci plik - jesli chcesz pod inna nazwa to:
Kod
svn cat -r 123 plik.php > plik-stary.php

w plik-stary.php dostaniesz stara wersje pliku plik.php
starach
Dziękuje doktorku. smile.gif

Nie spodziewałem się że jest zaimplementowany cat w SVN'ie. Chyba sobie przeczytam opisy tych wszystkich poleceń.
scanner
Jako, ze widże, iż pracujesz na windowsie, polecam TortoiseSVN - korzystam z niego na co dzień...
starach
Ten program był pierwszą rzeczą dotyczącą SVN'u z którą się zetknąłem. Nie wiedziałem nawet wtedy co to jest SVN, tylko że trzeba ściągnąć projekt, a TortoiseSVN jest do tego zalecany. tongue.gif Pewnie z niego właśnie będę korzystał, ale najpierw chcę poznać narzędzia wiersza poleceń.

edit>
Mam jeszcze dwa pytania.
1. Co zrobić w przypadku poważnych zmian w strukturze katalogu kopi roboczej. Czy muszę zaktualizować kopię roboczą do wersji z repozytorium i wprowadzić zmiany od nowa?
2. Jak skasować repozytorium i pozbawić kopię roboczą katalogów .svn w których subversion składuje informacje.
dr_bonzo
Cytat
1. Co zrobić w przypadku poważnych zmian w strukturze katalogu kopi roboczej. Czy muszę zaktualizować kopię roboczą do wersji z repozytorium i wprowadzić zmiany od nowa?

HYm, nie bardzo rozumiem o czym mowisz - powazne zmiany to normalne zmiany. Zawsze chcesz zaktualizowac KR (kop. rob.) do najnowszej wersji a potem zimeniac wszystko i commitowac.


Cytat
2. Jak skasować repozytorium i pozbawić kopię roboczą katalogów .svn w których subversion składuje informacje.

Czyli chcesz sam katalog projektu bez .svn/-ow? i do tego pozbyc sie repozytorium?

Najprosciej je wyeksportowac (svn export ... - dostaniesz sam projekt bez .svn/-ów ) a potem skasowac repozytorium.
Druga wersja to skasowac wszystkie katalogi .svn/ wewnatrz kopii roboczej (szukaj + usun) a potem skasowac repozytorium.
O to ci chodzilo?
starach
2. Tak o to chodziło dzięki.

1. Dodałem kilka katalogów, kilka skasowałem, kilku innym nazwy zmieniłem co łączyło się też z modyfikacją nazw klas, a teraz SVN pluje mi się że to zrobiłem i nie chce zatwierdzić zmian. Pomyślałem że w sumie można skasować istniejące repozytorium, ale skoro svn export wyciąga strukturę projektu z repozytorium to pozostaje ręczne wywalenie katalogów .svn z kopii roboczej. Nie jestem jeszcze przyzwyczajony do wprowadzania zmian w drzewie katalogów najpierw w repozytorium i następnie dopiero aktualizowania kopii roboczej i stąd ten błąd.
dr_bonzo
1.
Zmiany nazw katalogow wykonuj "svn move" a nie zwykla opcja zmiany nazwy w windzie (z tego co pamietam Tortoise SVN tak robi - i hmmm nie wiem czy ma taka opcje, moze gdzies glebiej w menu "rename").
Kasuj katalogi tez poprawnie "svn remove" .

Przy commicie czasami sie pluje ze masz nieaktualne KR - dajesz svn up i commit przechodzi.

No chyba ze cos wiecej "popsules".


Cytat
Nie jestem jeszcze przyzwyczajony do wprowadzania zmian w drzewie katalogów najpierw w repozytorium i następnie dopiero aktualizowania kopii roboczej i stąd ten błąd.

HMmm, ze operujesz bezposrednio na repozytorium? Generalnie nie potrzebujesz tego.
Operacje robisz na KR i commitujesz, that's all.
starach
Znowu się popisałem...
Podmieniając wygenerowany model ORM wywaliłem poprzednie katalogi w efekcie czego nie mam w nich ukrytych folderów .svn z informacjami o wersjonowaniu. Jaką komendę nie chciałbym wykonać zawsze mi krzyczy żebym wykonał cleanup bo folder Model jest zablokowany. Natomiast wykonanie cleanup skutkuje błędem: "Cleanup failed to process the following paths: ( ... ) is not a working copy directory." Co mam teraz zrobić? :/
Zyx
Ściągnij jeszcze raz nową kopię roboczą z repozytorium i skopiuj do niej te pliki, które pozmieniałeś (z wyjątkiem katalogów .svn).
starach
Ok tylko jak ja mam to zrobić skoro cały katalog z usuniętymi ręcznie podkatalogami jest zablokowany? :/
tiraeth
Jak usunąłeś lokalnie, to możesz wszystko wywalić i zrobić nowy checkout. Pobierzesz sobie wersję z przed zmian w ORM i potem dodasz to, co potrzebujesz.
dr_bonzo
Niekoniecznie - (jesli nie masz w tych podkatalogach zadnych wlasnych zmian..) - usun caly katalog (nie! svn rm'em - tak najzwyczajniej usun) z "generated models" (czy jak mu tam) - i daj svn up - odtworzy ci te katalogi, a teraz je usun prawidlowo svn rm...
starach
Cytat
D:\Projekty\www\p1\module\Articles\Model>svn up Merger
svn: Kopia robocza '.' jest zablokowana
svn: uruchom 'svn cleanup', by usunąć blokady (więcej informacji - zobacz 'svn help cleanup')

D:\Projekty\www\p1\module\Articles\Model>svn cleanup
svn: 'Merger' nie jest katalogiem kopii roboczej
sadsmiley02.gif
dr_bonzo
Jakbym mial dostep do twojego kompa... to moglbym cos poradzic - bo takto to niewiele wiem co jest co - co namieszales itp.

A jakbys skasowal "windowsem" caly katalog Model, a potem wewnatrz module/Articles dal "svn up" ?

Wiec najlepiej czekautnac od nowa i przeniesc zmienione pliki na nowa KR.
Cysiaczek
Daj jeszcze svn unlock. Tylko spróbuj na różnych ścieżkach, bo czasami może twierdzić, że coś nie jest repozytorium i trzeba bardziej precyzyjnie określić. Mi to polecenie pomaga, gdy coś wywalę przez pomyłkę.

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.