Jak dodać istniejący folder z plikami do SVN?

84

Jak dodać folder bez kontroli wersji do określonej lokalizacji SVN? Często zaczynam pisać kod i dopiero gdy mam kilka folderów zawierających pliki z kodem, dodaję go do SVN.

Zwykle robię:

  1. svn co katalog nadrzędny, w którym chcę utworzyć nowy folder do przechowywania mojego kodu.
  2. svn mkdir, aby utworzyć katalog, w którym chcę umieścić mój kod.
  3. Skopiuj i wklej mój kod.
  4. svn commit .
  5. Usuń mój bieżący katalog kodu roboczego.
  6. Odtwórz mój katalog kodu roboczego za pomocą svn co .
Siecje
źródło
2
Możliwy duplikat do stackoverflow.com/questions/2431389/ ...
pmod

Odpowiedzi:

134

Powiedzmy, że mam kod w katalogu ~/local_dir/myNewAppi chcę go umieścić pod „ https://svn.host/existing_path/myNewApp ” (będąc w stanie zignorować niektóre pliki binarne, biblioteki dostawców itp.).

  1. Utwórz pusty folder w repozytorium svn mkdir https://svn.host/existing_path/myNewApp
  2. Przejdź do katalogu nadrzędnego projektu, cd ~/local_dir
  3. Sprawdź pusty katalog w folderze lokalnym. Nie bój się - pliki, które masz lokalnie, nie zostaną usunięte. svn co https://svn.host/existing_path/myNewApp. Jeśli twój folder ma lokalnie inną nazwę niż w repozytorium, musisz określić ją jako dodatkowy argument.
  4. Możesz zobaczyć, że svn stteraz pokaże wszystkie twoje pliki jako ?, co oznacza, że ​​nie są obecnie pod kontrolą wersji
  5. Wykonuj svn addna plikach, które chcesz dodać do repozytorium, i dodaj inne svn:ignore. Możesz znaleźć przydatne opcje svn help add, na przykład --parentslub --depth empty, gdy chcesz selektywnie dodać tylko niektóre pliki / foldery.
  6. Zaangażuj się svn ci
qbolec
źródło
Do punktu 5: Możesz dodać wszystkie pliki / katalogi swojego roboczego katalogu w ten sposób w bash: find . -name .svn -prune -o -print0|xargs -0 svn add
Nicolas M
1
Najlepsze instrukcje, jakie kiedykolwiek widziałem, dotyczące dodawania nowych rzeczy do svn.
Colin 't Hart
jak to zrobić: „Jeśli twój folder ma lokalnie inną nazwę niż w repozytorium, musisz określić ją jako dodatkowy argument”
Kristof Pal
1
@KristofPal:svn co https://svn.host/existing_path/myNewApp ~/local_dir/localNameOfFolder
qbolec
1
Dziękuję @qbolec za „nie bój się”. +1 dla wszystkich „najlepszej odpowiedzi”. Jako wskazówka dla tych, którzy nadal mogą się bać: możesz wykonać kopię zapasową swojej pracy, jeśli nadal się boisz.
Stephan Samuel
55

Jeśli dobrze zrozumiałem twój przypadek użycia, sugeruję spróbować użyć svn add, aby umieścić nowy folder pod wersją, patrz tutaj . Poniższe polecenie doda nowy folder z plikami rekurencyjnie pod kontrolą wersji (jeśli jesteś w prawidłowej kopii roboczej):

svn add new_folder
svn commit -m "Add New folder to the project"

Jeśli nie jesteś w kopii roboczej, utwórz ją za pomocą svn checkout , skopiuj tam nowy_folder i wykonaj powyższe kroki.

LUB

Spróbuj importu svn , patrz tutaj ; poniższe utworzy nowy folder i załaduje pliki do repozytorium:

svn import -m "Import new folder to the project" new_folder \
        http://SVN_REPO/repos/trunk/new_folder

Pamiętaj również, że:

Po zaimportowaniu danych zwróć uwagę, że oryginalne drzewo nie podlega kontroli wersji. Aby rozpocząć pracę, nadal musisz svn pobrać nową kopię roboczą drzewa

pmod
źródło
Ale folder nadrzędny nie podlega kontroli wersji. Skąd wie, gdzie umieścić go w repozytorium svn
Siecje
Nie jest dla mnie jasne, gdzie są twoje foldery, czy nie pracujesz w „kopii roboczej”?
pmod
Mam już istniejące repozytorium svn z folderami. Tworzę pliki i foldery inne niż svn i chciałbym dodać je do repozytorium. Sposób, w jaki robię to teraz, to pobranie katalogu powyżej, w którym chcę umieścić swój projekt. Następnie kopiuję wklej do kasy i dodaję tam svn.
Siecje
@Siecje Myślę, że teraz rozumiem, co masz na myśli
pmod
więc muszę zrobić checkout, co oznacza, że ​​muszę usunąć pliki i ponownie pobrać je z SVN? Więc w przypadku plików strony internetowej witryna musiałaby zostać wyłączona na chwilę, gdy to robię?
Siecje
9

Nie używam poleceń. Powinieneś móc to zrobić za pomocą GUI:

  • Kliknij prawym przyciskiem myszy puste miejsce w folderze Moje dokumenty, wybierz TortoiseSVN> Przeglądarka repo.
  • Wpisz http: // subversion ... (ścieżka URL do serwera / katalogu Subversion, w którym zapiszesz) jako ścieżkę i wybierz OK
  • Kliknij prawym przyciskiem myszy katalog główny w Repo i wybierz Dodaj folder . Nadaj mu nazwę swojego projektu i utwórz go.
  • Kliknij prawym przyciskiem myszy folder projektu w przeglądarce repo i wybierz Do kasy . Katalog Checkout będzie TwoimVisual Studio\Projects\{your project} folderem. Wybierz OK.
  • Otrzymasz ostrzeżenie, że folder nie jest pusty. Powiedz Tak, aby pobrać / wyeksportować do tego folderu - nie nadpisze plików projektu.
  • Otwórz folder swojego projektu. Zobaczysz znaki zapytania na folderach powiązanych z twoim projektem VS, które nie zostały jeszcze dodane do Subversion. Wybierz te foldery za pomocą Ctrl + kliknięcie, a następnie kliknij prawym przyciskiem myszy jeden z wybranych elementów i wybierz TortoiseSVN> Dodaj
  • Wybierz OK w monicie
  • Twoje pliki powinny zostać dodane. Wybierz OK w Dodaj zakończone! dialog
  • Kliknij prawym przyciskiem myszy w pustym obszarze folderu i wybierz Odśwież. Teraz zobaczysz ikony „+” na folderach / plikach
  • Ponownie kliknij prawym przyciskiem myszy pusty obszar w folderze i wybierz Zatwierdź SVN
  • Dodaj wiadomość dotyczącą tego, co robisz i kliknij OK
vapcguy
źródło
1

Jeśli intencją jest dodanie kopii lokalnej / roboczej do SVN, robiłem to w następujący sposób.

Uwaga: używam klienta TortoiseSVN i te kroki zakładają, że masz już zainstalowanego klienta TortoiseSVN.

  1. Mam projekt (Test-4.2.2) w moim lokalnym. Chcę załadować / dodać do repozytorium SVN.
  2. Używając repozytorium TortoiseSVN, utworzyłem pusty katalog „Test-4.2.2”
  3. W moim lokalnym katalogu zmieniłem nazwę istniejącego katalogu „Test-4.2.2” na „Test-4.2.2.1” (tymczasowo)
  4. Pobierz pusty „Test-4.2.2” z SVN do lokalnego
  5. Skopiuj wszystkie podkatalogi z 4.2.2.1 do tego katalogu checkout 4.2.2
  6. Teraz kliknij prawym przyciskiem myszy „Test-4.2.2” i zatwierdź.
  7. Usuń folder tymczasowy „Test-4.2.2.1”
Purushothaman
źródło
1

W Windows 7 zrobiłem to:

  1. Czy zainstalowałeś SVN i Tortoise SVN? Jeśli nie, wygoogluj je i zrób to teraz.
  2. Przejdź do folderu SVN, w którym możesz mieć inne repozytoria (skrót od repozytorium) (lub jeśli tworzysz je od podstaw, wybierz lokalizację dysku C, dysk D itp. Lub ścieżkę sieciową).
  3. Utwórz nowy folder do przechowywania nowego repozytorium. Nazwij go taką samą nazwą jak tytuł projektu
  4. Kliknij folder prawym przyciskiem myszy i wybierz Tortoise SVN -> Utwórz repozytorium tutaj
  5. Powiedz tak, aby utworzyć strukturę folderów
  6. Kliknij OK. Obok nowego folderu / repozytorium powinna pojawić się nowa ikona przypominająca „falę”
  7. Kliknij prawym przyciskiem nowe repozytorium i wybierz Przeglądarkę repozytoriów SVN
  8. Kliknij prawym przyciskiem myszy „bagażnik”
  9. Wybierz DODAJ Folder ... i wskaż strukturę folderów projektu w fazie rozwoju.
  10. Kliknij OK, a SVN doda twoją strukturę folderów. Bądź cierpliwy! Wygląda na to, że SVN się zawiesił / zawiesił. Nie martw się. Wykonuje swoją pracę.

Gotowe!

Fandango68
źródło
0

3 kroki:

  • Otwórz przeglądarkę repozytoriów (użyj linku do folderu nadrzędnego roku).
  • Kliknij prawym przyciskiem myszy Wybierz „Dodaj folder”.
  • Przejdź do swojego folderu.

wprowadź opis obrazu tutaj

Arindam Roychowdhury
źródło
W ten sposób nie możesz dodać folderu, który nie istnieje. „Dodaj folder” da ci okno Eksploratora, dzięki czemu możesz wskazać istniejący folder, a następnie podać okno zatwierdzenia, aby móc dodać go do Subversion. Nie służy do tworzenia nowego folderu po stronie lokalnej - który nadal musiałby być wykonany ręcznie i tam zapełniony, a następnie mógłby zostać użyty do wysłania jego zawartości do Subversion. To tylko połowa historii.
vapcguy
0

Spróbujmy… To działa dla mnie…

svn add * --force
Parthiban Soundram
źródło