svn:externals na przykładzie projektu w symfony
Przypuśćmy, że pracując nad projektem w symfony dochodzi do sytuacji gdzie używamy pluginów napisanych przez siebie i co jakiś czas wprowadzamy do nich jakieś poprawki. Co zatem musimy później zrobić? Wypadałoby zaktualizować wszystkie projekty w których jest ten plugin… albo, jeśli używamy subversion, zastosować atrybut svn:externals…
Atrybut ten służy do załączania do repozytorium repozytoriów zewnętrznych, nad którymi pracują inne zespoły programistyczne (lub my sami). Dzięki takiemu podejściu możliwe będzie pracowanie zawsze z aktualnymi wersjami pluginów, a jak natrafimy na jakis błąd to wystarczy go po prostu poprawić i skommitować- zmiany zostaną wprowadzone w repozytorium pluginów, z którego korzystają inne repozytoria… dzięki czemu zawsze dysponować będziemy aktualną wersją.
Co należy zatem zrobić?
Załóżmy, że w katalogu plugins projektu symfony utworzyliśmy nowy plugin o nazwie caACLUser. Plugin wydał nam się tak fajny, że chcielibyśmy wykorzystać go w innych projektach, ale póki co rozwijamy bieżący projekt ( oczywiście w miedzyczasie w pluginie będziemy eliminować wszystkie napotkane błędy- dzięki czemu plugin będzie bardziej niezawodny ). A więc taki plugin jest idealnym kandydatem do wydzielenia go do osobnego repozytorium. A więc zaczynamy.
Po pierwsze co zrobimy to utwórzmy nowe repo gdzie będziemy przechowywali nasze przyszłe pluginy. Następnie dodajmy do niego plugin.
Jeśli plugin znajduje się w projekcie a projekt jest już w systemie zarządzania wersjami to kolejną rzeczą będzie usunięcie go z projektu i skommitowanie zmian ( dokładnie ):
bash:$ svn delete caACLPlugin bash$ svn commit -m "przed wydzieleniem do osobnego katalogu usnięto plugin caACLPlugin"
A później nadanie właściwości externals na katalog plugins:
bash:$ svn propedit svn:externals plugins
Otworzy się nasz ulubiony edytor tekstu w którym należy podać gdzie i co należy dołączyć:
bash:$ caACLPlugin svn+ssh://remote-host/home/damian/svn/common/trunk/caACLPlugin
UWAGA! Możliwe jest dodanie więcej niz jednego repo. W tym celu każdy nowe repo należy dodać w nowym wierszu.
Nastepnie trzeba skomittować nowy properties:
bash:$ svn commit -m "dodanie zewnetrzego repozytorium caACLPlugin"
Ale nadal nie ma plugina. Zróbmy update:
bash:$ svn update Pobieranie zewnętrznego obiektu do 'caACLPlugin'
To wszystko
Uwaga zaznaczam, że nie jestem specjalistą od Subversion dlatego mogłem popełnić jakiś błąd lub coś zrobić nie tak, dlatego komentarze mile widziane
Inne posty:
Posted on 2010/05/19 at 14:41
bardzo ciekawe, dzieki