2012-10-30 8 views
7

Zbadam sposób zatwierdzenia wszystkich zmodyfikowanych/dodanych plików za pomocą wiersza poleceń z Subversion, z wyłączeniem podanej czarnej listy. czy to możliwe?Zatwierdź wszystkie zmodyfikowane/dodane pliki za pomocą wiersza poleceń z Subversion z wyłączeniem dostarczonej czarnej listy

Jeśli mam, powiedzmy, 100 plików, które chciałbym zatwierdzić, ale przeplatane tą listą są siedem plików, które nie chcę chcę zatwierdzić. Czy istnieje sposób na powiedzenie "zatwierdzić wszystkie pliki z wyjątkiem /path /to/file1.php, /path/to/file2.php, /path/to/file3.php", itd ....

Na przykład , Musiałbym zrobić coś takiego:

svn ci [list all files to commit in here] -m 'my commit message' 

Czy jest jednak lepszy sposób na zrobienie tego? Nie mogę znaleźć niczego udokumentowanego w związku z tym.

Odpowiedz

6

Nie ma opcji, aby zignorować pliki w locie przy zatwierdzaniu. Jednakże istnieją dwa podejścia, które można podjąć:

  1. użyć funkcji changelists. Może to pomóc w utworzeniu filtrów plików, które chcesz zatwierdzić i tylko je zatwierdzić. Po utworzeniu listy zmian na komputerze programisty twoje filtry nie wpłyną na ogólne repozytorium. Na przykład, można dodać wszystkie pliki z listy zmian przy użyciu:

    svn changelist to-commit *

    a następnie usunąć te, które chcesz ignorować:

    svn changelist --remove /path/to/file1.php

  2. Tylko svn add pliki, które są pracując nad, jeden po drugim, zaraz po rozpoczęciu edycji. Każdy plik, który nie został przekazany do repozytorium, zostanie zignorowany podczas zatwierdzania. Oczywiście ma to tę wadę, że będziesz jedynym programistą, który będzie miał te pliki na swoim komputerze.

+0

Lepiej będzie użyć '--targets ARG: przekazać zawartość pliku ARG jako dodatkowe argumenty' na etapie tworzenia listy zmian –

+0

Myślę, że to zależy od stosunku między liczbą plików, które chce dodać a tymi, które chce wykluczyć. Widząc, że chce tylko wykluczyć ~ 7 plików z ~ 100, łatwiej jest dodać je wszystkie do listy zmian, a następnie ręcznie usunąć tylko te, które muszą zostać zignorowane. –

+0

Tak, to zależy, ale dla długich list plik-source jest po prostu zarządzalny, z mojego POV –

0

Możesz użyć do tego celu Subversion svn:ignore property.

+2

Problem polega na tym, że nie chcę zignorować tych plików na zawsze i nie chcę o nich zapomnieć. To tak, że zrobię moje zatwierdzenie moich 90-nieparzystych plików, a następnie wprowadzę więcej zmian do pozostałych 7, a następnie dokonam zatwierdzenia później tego dnia lub następnego dnia. Zastosowanie 'svn: ignore' zignoruje te pliki dopóki nie zostanie powiedziane inaczej, AFAIK. – crmpicco

5

Miałem podobną sytuację, w której musiałem zatwierdzić tylko niektóre pliki z kilku zmodyfikowanych plików. Musiałem zaktualizować/usunąć zależność od rodzica i wszystkich jego projektów podrzędnych (Maven) i zatwierdzić odpowiednie zmiany. Oto, co zrobiłem, aby utworzyć listę zmian na SVN.

svn cl my-changelist $(svn st | grep '^M' | awk '{print $2}' | grep 'pom.xml') 

svn commit -m "Updated dependencies" --changelist my-changelist 

Pierwsze polecenie powyżej tworzy listy zmian o nazwie „my-listy zmian” i dodaje wszystkie zmodyfikowane pliki o nazwie „” pom.xml do listy.

Drugie polecenie zatwierdza listę zmian (wszystkie pliki na liście na podstawie pojedynczego numeru wersji).

Powiązane problemy