Posted on 27th May 2009One Response
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:

  1. Tworzenie repozytorium Subversion
  2. Subversion 1.6.3 i svn: warning: Network connection closed unexpectedly
Comments
comment by online
Posted on 2010/05/19 at 14:41

bardzo ciekawe, dzieki

Leave a Response
XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Comment moderation is enabled. Your comment may take some time to appear.