2009-10-09 10 views
14

W tym kontekście mam gotowy do użycia system CMS, do którego chcę dokonać dostosowań; więc chcę zachować pliki, które modyfikuję pod kontrolą wersji, ale nie widzę potrzeby umieszczania całego drzewa plików pod kontrolą wersji.Dodawanie pojedynczego pliku do repozytorium Subversion, ale nie do innych plików znajdujących się wzdłuż ścieżki.

Mój problem polega na tym, że muszę dodać plik do kontroli wersji, który znajduje się kilka podkatalogów w dół, ale nie chcę dodawać niczego innego do repozytorium oprócz pliku i jego folderów nadrzędnych.

Aby zilustrować, że mam następujący plik w moim projekcie:

projekt/folder1/folder2/plik.txt

chcę dodać plik.txt do repozytorium, a folder1 jest w wersji kontrola, ale folder2 nie jest. Istnieją istniejące pliki w folder1 i folderze2, których nie chcę, aby wszystkie zostały umieszczone pod kontrolą wersji.

Wykonanie svn import folder1/folder2/file.txt wydaje się nie działać, ponieważ wtedy muszę sprawdzić plik, a nawet jeśli najpierw usunę lokalną wersję, SVN narzeka, że ​​istnieje folder nadrzędny. Zakładam, że oznacza to, że jeśli użyję opcji --force, po prostu przekręciłbym zawartość tych folderów.

Problem z svn add folder1/folder2/file.txt polega na tym, że wymaga, aby każdy folder macierzysty znajdował się już w repozytorium (co wynika z faktu, że nie może znaleźć pliku folder2/.svn/wpisy), ale tylko folder1 znajduje się w repozytorium . Więc pomyślałem, że mogę najpierw zrobić svn add folder1/folder2. Problem polega na tym, że umieszcza całą zawartość folderu2 w repozytorium, czego nie chcę. Wydaje się, że rozwiązaniem byłby svn add --depth=empty folder1/folder2, który po prostu dodaje folder i nie ma zawartości, ale opcja --depth jest nową funkcją w Subversion 1.5, podczas gdy ja używam wersji 1.4.2 i dobrze byłoby unikać aktualizacji w tym miejscu .

Zastanawiam się, czy istnieje sposób obejścia braku opcji --depth w starszych wersjach Subversion? Czy istnieje inny sposób rozwiązania tego problemu? Zastanawiam się również, czy być może sposób, w jaki to zrobiłem, nie był tak pomocny

Odpowiedz

33

Powinieneś dodać folder z opcją "--non -recursive ":

svn add --non-recursive folder1/folder2 
+0

Widziałem tę opcję, ale z jakiegoś powodu sądziłem, że oznaczałoby to dodanie każdej pozycji podrzędnej, ale nie schodź dalej. Ale zrobiło to dokładnie to, czego byłem, dzięki :) – nedned

16

można również używać szybkiego wersję "-N", co jest skrótem od "--non-rekurencyjny", jak w

svn add -N folder1/folder2

24

Jeśli Twoja wersja klienta wynosi 1,5 lub więcej, możesz po prostu użyć

svn add --parents folder1/folder2/file.txt 

dodanie pliku i jego katalogów nadrzędnych.

+1

Ta odpowiedź zasługuje na więcej uwagi. Obecnie jest to o wiele szybsze rozwiązanie niż inne odpowiedzi. – JMTyler

Powiązane problemy