2013-06-04 18 views
9

Deweloper naprawia błąd w gałęzi utworzonej z pnia. Następnie testuję gałąź i ponownie włączam do bagażnika.Jak dokonać zmian z poziomu wiersza poleceń, a nie tylko zmian właściwości?

Ostatnio dokonuję również zmian w nieruchomościach. Są trzy pliki, które wielokrotnie wracam do łącza. Porównałem zawartość plików pomiędzy wersjami za pomocą svn i są one takie same. Zmieniła się tylko część nieruchomości.

Q1: jest jakiś sposób, więc chciałbym popełnić z wiersza poleceń tylko pliki, które M w pierwszej kolumnie tylko wtedy, gdy robię svn st?

Q2: Czy istnieje sposób na wyczyszczenie bagażnika lub pozbycie się tych trzech plików w kółko?

---- edit svn st daje mi

M  . 
M  controllers/database/udfs/searchForNameContSrch.sql 
M  controllers/eduMoodleInterface 
M  controllers/main 
M  controllers/teaching 
M  lib/utils/EduMail.php 
M  lib/views/learning/progress/reverse_template_converter.php 
M  pages/carer/carer_basepage.php 
M  pages/common/contact_list_detail_basepage.php 
M  pages/contact/contact_basepage.php 
M  pages/staff/staff_basepage.php 
M  pages/student/student_basepage.php 

aktualnego rozwiązania jest, aby przywrócić pliki, które mają M w drugiej kolumnie przed popełnić. Działa, ale zajmuje dużo czasu. Każdy inny pomysł?

+0

to prawdopodobnie oszukuje i zbyt nieeleganckie być odpowiedzią, ale od czasu do czasu kopiuję i wklejałem żądane pliki do vi, usuwam początkową literę-kolumny, a następnie przytrzymuję shift-J, dopóki wszystkie nazwy plików nie znajdują się w tej samej linii, a następnie dodam słowo "svn ci -mBlahBlah" do z przodu tej pojedynczej linii, a na końcu wykonuj tę linię jako polecenie powłoki. –

+0

:-) To trochę tak samo jak przywracanie plików, których nie chcę zatwierdzać. Nie powinni być zaangażowani, nie wiemy, dlaczego i tak zmieniono właściwości. – Radek

+0

Pytanie 1: Możesz użyć Tortoise do wykonania tego rodzaju pracy. Zaznacz w polu wyboru pliki, które chcesz zatwierdzić. Q2: To samo narzędzie, które reaguje na Q1, Tortoise czyść to za ciebie, jeśli masz wiele plików, możesz je wyczyścić za pomocą tego narzędzia. –

Odpowiedz

7

Byłbym bardziej skłonny dowiedzieć się, co się dzieje z właściwościami i rozwiązać ten problem, niż próbować je po prostu zignorować. To powiedziawszy, na końcu tej odpowiedzi jest jeden liniowiec, który przyspieszy twój proces przywracania, jeśli jesteś na Linuksie.

W celu uzyskania tej odpowiedzi ustawiłem właściwość w jednym pliku (window.c) i zmodyfikowałem inny (window.h).

svn status 
M  window.c 
M  window.h 

Główne komendy svn użycie do właściwości to:

svn propset answer 42 window.c 
property 'answer' set on 'window.c' 

Ustawia propety 'odpowiedź' na pliku window.c cenić 42. Nie jesteś prawdopodobnie chcąc to wykorzystać.

svn proplist window.c 
Properties on 'window.c': 
    svn:keywords 
    svn:eol-style 
    answer 

Zawiera listę wszystkich właściwości (bez wartości) w pliku.

svn propget answer window.c 
42 

Pobiera wartość określonej właściwości.

svn propedit answer window.c 
Set new value for property 'answer' on 'window.c' 

Otwiera edytor (na moim komputerze jest to nano ze wszystkich rzeczy) i pozwala edytować właściwość, a następnie ustawia ją na podanym pliku.

svn propdel answer window.c 
property 'answer' deleted from 'window.c'. 

Usuwa określoną właściwość (prawdopodobnie to nie rozwiąże problemu, zgaduję).

Można również zrobić svn diff aby dowiedzieć się, który nieruchomość jest inna:

svn diff window.c 
Index: window.c 
=================================================================== 
--- window.c (revision 35712) 
+++ window.c (working copy) 

Property changes on: window.c 
___________________________________________________________________ 
Added: answer 
## -0,0 +1 ## 
+42 
\ No newline at end of property 

To w zasadzie mówi, że jedyną zmianą tutaj jest została dodana właściwość „odpowiedź”, o wartości 42 (a nie nowej linii).

Więc co zrobię Uruchom z svn diff i dowiedzieć się, co się zmieniło:

svn diff controllers/database/udfs/searchForNameContSrch.sql 
svn diff controllers/main 

Mają Google dla tej własności, że zmienia się i sprawdzić, czy można dowiedzieć się, jakie narzędzie jest ustawienie go i wyłącz to.

Możesz spróbować użyć svn propdelete, aby pozbyć się nieruchomości, ale nie sądzę, że to pomoże.

przeciwnym razie - szybkie skrypt powracają

W przeciwnym razie, jeśli używasz Linuksa, to jeden liner powróci pliki, które mają modyfikacje nieruchomości, ale nie treści modyfikacjami.

PROSZĘ PRZETESTOWAĆ NINIEJSZĄ AKTYWNĄ AKTYWNOŚĆ BEZPIECZEŃSTWA W PIERWSZYM CZASIE, TAK?!?!?

svn status | grep "^ M" | sed "s/^.\{8\}//" | while read rv; do svn revert $rv; done 

Czyli:

  • svn status

  • rura go przez grep i filtrem do tylko linie, które zaczynają się od 'M' (a więc będzie ignorować 'MM' - ważne).

  • przeprowadź przez sed i usuń pierwsze 8 znaków (które są kolumnami statusu przed nazwą pliku).

  • potokować w pętlę i przywrócić podaną nazwę pliku.

Oto ona w akcji:

svn status 
M  window.c 
M  window.h 
svn status | grep "^ M" | sed "s/^.\{8\}//" | while read rv; do svn revert $rv; done 
Reverted 'window.c' 
svn status 
M  window.h 
+0

Mam nadzieję, że uda nam się dowiedzieć, co się zmieniło. Brzmi interesująco. –

1

napisałeś, że te właściwości zmienia się, gdy Państwo zintegrować z powrotem do tułowia, więc myślę, że zmienia właściwość jest svn:mergeinfo, ale należałoby to sprawdzić.

Zakładając powyższe, zapoznaj się z poniższymi źródłami, aby zrozumieć, czym jest mergeinfo i dlaczego tak naprawdę chcesz je zatwierdzić. Ponadto możliwe jest wyczyszczenie tych właściwości i nie ponowne ich ponowne pojawienie się, jeśli będziesz trzymać się bardziej rygorystycznego procesu scalania - tzn. Zawsze uruchamiaj scalanie w katalogu głównym gałęzi/gałęzi. W ten sposób mergeinfo zostanie nagrany tylko na tych katalogach, a nie na poszczególnych plikach. Ma to tę zaletę, że nie powoduje skażenia twojego repo z rozrzuconymi wokół, a także sprawia, że ​​twoje zatwierdzanie różnic jest czystsze.

Źródła:

Powiązane problemy