2012-10-12 9 views
7

Próbuję skonfigurować svn:externals z TortoiseSVN na komputerze z systemem Windows. Mam dwa projekty i oba repozytoria zostały już utworzone na tej samej maszynie lokalnej.Konfigurowanie SVN: Zewnętrzne z TortoiseSVN w Windows

Obecna struktura wygląda następująco. Stworzyłem repoA, repoB dla repozytoriów i workA i dla działających katalogów (kas).

Repozytoria

Z: \ repo \ repoA

Z: \ repo \ repoB

katalogi robocze

Z: \ Projects \ workA \ trunk \ core.php

Z: \ Projects \ worka \ pnia \ lib \ lib01.php

Z: \ Projects \ workB \ pnia \ core_mod.php

Z: \ Projects \ workB \ pnia \ lib \

(istnieją tags i branches foldery, ale są one pomijane, aby utrzymać proste pytanie.)

Co chciałbym osiągnąć to plik (y) workA\trunk\lib\ w tym przypadku lib01.php zostanie automatycznie skopiowany do katalogu workB\trunk\lib\.

Aby ustawić to, co zrobiłem to w następujący sposób:

  1. Sprawdzone się workA i przypisać go do repoA i wyrejestrowany workB i przypisać go do repoB
  2. comitted do folderu workA\trunk więc repoA jest aktualny.
  3. Aby zaimportować lokalizację dla workB\trunk\lib, kliknij prawym przyciskiem myszy folder workB i wybierz opcję TortoiseSVN -> Properties.
  4. Kliknięto New -> Externals i kliknięciu New...
  5. ./trunk/lib wpisane w polu Local path formularza. Dla pola URL wpisz file:///Z:/repos/repoA/trunk/lib. Po naciśnięciu przycisku ... otworzyła się przeglądarka repo i pomogła wybrać folder docelowy.

    enter image description here

    enter image description here

  6. Kliknięto Ok kilka razy, aby zamknąć okna ustawień. Zakładałem, że ustawiono zewnętrzne ustawienia.

  7. utworzony plik, Z:\Projects\workB\trunk\core_mod.php
  8. prawym kliknięciu na Z:\Projects\workB\trunk\ i wybrany SVN Comit do COMIT workB do repoB.

Spodziewałem się, że w tym momencie lib01.php zostanie automatycznie zaimportowany do folderu Z:\Projects\workB\trunk\lib, ale nic nie zostanie skopiowane. Próbowałem też SVN Update klikając prawym przyciskiem myszy na folderze workB\trunk. Ale folder workB\trunk\lib pozostawał pusty.

Podejrzewam, że ścieżka względna ./trunk/lib musi się mylić. Nie wiem Jeśli możesz wskazać, co robię źle, byłoby to docenione.

Aktualizacja

6a - commit zmienione Working Copy WorkB do repo

To była ślepa plamka dla mnie. Kliknąłem prawym przyciskiem myszy na Z:\Projects\workB i wybrałem SVN Commit... i otrzymałem następujący błąd.

enter image description here

Po kliknięciu przycisku OK natychmiast mam okno dialogowe z pytaniem, czy zaktualizować folder i kliknąć OK. Następnie TortoiseSVN zaczął aktualizować Z:\Projects\workB i otrzymałem ten błąd. Ale po tym, kiedy ponownie przeprosiłem Z:\Projects\workB, przeszedł bez błędu.

enter image description here

("trunk/lib" w twoim przypadku będzie bardziej kuloodporny, jak sądzę).

Dzięki, kiedy wybrać ponownie Property folderu workB i kliknięciu na przycisk Edit dla svn:externals, TortoiseSVN automatycznie regulowana ./trunk/lib do trunk/lib. Teraz tak jest.

6b - test z repobrowser na RepoB (tylko najszybszy sposób), że definicja jest poprawna

I kliknięciu prawym przyciskiem myszy na Z:\repos\repoB i wybrał TortoiseSVN -> repo-browser i przejrzysz w dół do folderu bagażnika. Wygląda to następująco. Czy to wygląda dobrze? Naprawdę nie wiem, ponieważ nigdy nie pracowałem nad tym zadaniem. Folder lib w folderze trunk jest pusty w przeglądarce repo.

enter image description here

Folder Z:\Projects\workB\trunk\lib jest jeszcze pusty. Komunikat o błędzie sugeruje przeniesienie "Z: \ Projects \ workB", ale nie jestem pewien co to znaczy.

+0

repo Broswer pokazują dwa ** ** lib foldery wewnątrz pnia - jedno zewnętrzne i jeden prawdziwy (niepotrzebny) - to problem. Wypróbuj nowy bagażnik (w pełni rekursywny, z zewnętrznymi), aby zobaczyć aktualny stan repo –

+0

'Repo-Broswer pokazuje dwa foldery lib wewnątrz pnia - jeden zewnętrzny i jeden prawdziwy (nie potrzebny) - to problem. - To było to . Dzięki. Usunąłem prawdziwy folder 'lib' w repo-przeglądarce,' Z: \ Projects \ workB \ trunk \ lib' i wykonałem 'SVN Update' na' Z: \ Projects \ workB'. Teraz 'Z: \ Projects \ workB \ trunk \ lib \ lib01.php' zostało utworzone automatycznie. To była naprawdę długa droga do rozwiązania. – Teno

Odpowiedz

3

Zapomniałaś co najmniej jeden obowiązkowy działanie

6a - commit zmienione Working Copy WorkB do repo

i jeden opcjonalny kontrolny

6b - test z repobrowser na RepoB (tylko najszybszy sposób), że definicja jest poprawna

Nie pamiętam dlaczego, ale nigdy nie używam ./ w ścieżce dla adresów URL w TSVN ("trunk/lib" w twoim przypadku będzie bardziej kuloodporny, jak przypuszczam). I czyste nawyki osobiste - zdefiniować zewnętrzny w punkcie montowania, nawet jeśli w wyniku otrzymuję wiele definicji wewnątrz repo zamiast jednego zagregowane korzenia

Repo przeglądarkę z zewnętrznego w drzewo i definicji pokazano

Repo-Browser

+0

Dziękuję. Zaktualizowałem pytanie. – Teno

0

Dla każdego, kto napotka na ten problem, katalog roboczy workB nie potrzebował folderu importowania.

Z: \ Projects \ worka \ pnia \ core.php

Z: \ Projects \ worka \ pnia \ lib \ lib01.php

Z: \ Projects \ workB \ pnia \ core_mod .php

Z: \ Projects \ workB \ trunk \ lib \

musiał być

Z: \ Projects \ worka \ pnia \ core.php

Z: \ Projects \ worka \ pnia \ lib \ lib01.php

Z: \ Projects \ workB \ pnia \ core_mod.php

Z: \ Projects \ workB \ pnia \

(bez Z: \ Projects \ workB \ pnia \ Mb)

+0

naprawdę ty * możesz * (teoretycznie, jestem zbyt leniwy do testowania) mam ** prawdziwy folder lib ** i ** zewnętrzne wewnątrz ** to root, jeśli: 1. utworzysz zewnętrzną definicję dla LIB folderu 2. Ścieżka góry będzie "." –

+0

Interesujące. Brzmi jednak trochę skomplikowanie dla mojego obecnego poziomu zrozumienia. Prawdopodobnie informacje byłyby przydatne dla innych zaawansowanych użytkowników. Dzięki za wkład. – Teno