Jak zacząć korzystać z svn: externals?

81

Szukam zwięzłego i dobrze napisanego tutoriala na temat korzystania z svn: externals.

Sam już wiem, jak z nich korzystać, ale chcę mieć dobry artykuł, do którego mogę się odnieść, odpowiadając na pytania, takie jak to, które ostatnio pojawiły się:

Co zrobić z wieloma projektami zależnymi od tego samego źródła?

Zrobiłbym to sam, ale nie używam ich na tyle często, by chcieć wystawić szyję i napisać na ten temat tutorial. Google okazał się zaskakująco nieprzydatny w tym temacie.

Joel Coehoorn
źródło

Odpowiedzi:

47

Oto kilka sekcji na ten temat w podręczniku svnbook / TortoiseSVN:

To jest strona svnbook na svn: externals. Jest to najbardziej przydatne źródło informacji na ten temat.

W tym rozdziale wyjaśniono cztery sposoby uwzględniania podprojektów w przepływie pracy (w procesie pomija się jeden piąty: dowiązania symboliczne).

A ta ostatnia jest stroną specyficzną dla TortoiseSVN na temat importowania rzeczy w repozytorium (niezwiązana bezpośrednio z svn: externals).

Ole Lynge
źródło
20

W przypadku, gdy z linków podanych powyżej nie wynika jasno, sposób ustawiania svn:externalswłaściwości, która jest powiązana z określoną wersją (przypinanie), oto jest:

svn propset svn:externals "plugins -r12345 https://svn.example.com/common/plugins" extras

Spowoduje to utworzenie pluginspodkatalogu w extraskatalogu i połączenie go z wersją 12345zewnętrznego adresu URL SVN https://svn.example.com/common/plugins.

Istnieje artykuł o czerwonej fasoli, który sugeruje użycie, propeditponieważ svn:externalsmoże to być wartość wieloliniowa. Powyższy przykład zostanie zmieniony w następujący sposób, aby użyć propedit.

svn propedit svn:externals extras

Następnie dodasz po jednym wierszu dla każdego linku zewnętrznego w tym samym formacie pokazanym powyżej dla wartości.

EricD
źródło
0
root/repo1/proj/base/common/log.c
root/repo1/proj/base/common/log.h
root/repo1/proj/base/client

root/repo2/proj/test/base

Jak pokazano powyżej, chcemy skopiować 2 pliki i 1 katalog do repo2

Krok 1

katalog: / home / jack / repo2 / proj /

cd /home/jack

Krok 2

svn propset svn:externals "../repo1/proj/base/client proj/base/client" repo2

coś jak: ln repo1/proj/base/client repo2/proj/base/client

Krok 3

export SVN_EDITOR=vim

Krok 4

svn propedit svn:externals repo2

vim pokazuje:

../repo1/proj/base/client proj / base / client

Krok 5: dodaj kolejne dwa pliki

../repo1/proj/base/client proj/base/client
../repo1/proj/base/common/log.c proj/base/common/log.c
../repo1/proj/base/common/log.h proj/base/common/log.h
KunMing Xie
źródło