з Subversion, як кіраваць версіяй кампанента ў мультипроектном сховішча?

Уявіце сабе арганізацыю сховішчы, як гэта:

/Project1/branches
          /tags/Rel-1.0
          /trunk
/Module1/branches
           /tags/Rel-1.0
           /tags/Rel-1.1
           /tags/Rel-2.0
           /trunk
/Module2/branches
           /tags/Rel-1.0
           /tags/Rel-1.1
           /tags/Rel-1.2  
           /tags/Rel-1.3
           /tags/Rel-2.0
           /tags/Rel-2.1         
           /trunk

Project1 выкарыстоўвае Module1 і module2. Выпуск 1.0 project1 ажыццяўляецца з дапамогай версія 1.0 Module1 і module2.

Новы выпуск project1 (названы, напрыклад, 1.1, не з'яўляецца сур'ёзнай эвалюцыі) ажыццяўляецца з дапамогай Release 2.0 Module1 і 2.1 з module2.

Як можна зрабіць гэта з дапамогай падрыўной.

2

2 адказы

Я прапаную рэарганізацыю РЭПО шляхам падзелу на асобныя аперацыі РЭПО для кожнага «суб'екта» (праект, Module1, Module2, ..., модулю) і выкарыстанне SVN: знешнія у праекце РЭПО для ўсіх модуляў, замест прамога кода ўкладанні.

На этапе развіцця знешнія ставяцца да лэбавым знешняй РЭПО, у кожным выпуску праекта (адзначаны як адмысловы тэг, да?), Перш чым пазначаных праекта вы павінны змяніць і замарозіць знешнія для некаторага фіксаванага перагляду уключаных модуляў.

прафесіянал

  • Вы Разыдзецца deleopment гісторыі (з пунктам гледжання SVN) у незалежныя падраздзелы
  • для кожнага пазначаных выпуску звязаных версій модуляў лёгка ідэнтыфікаваць
  • Repos будзе мець больш просты код дрэва
  • /нешта забыта/

супраць

  • history of прафесіяналject will not be transparent due to the presence of a bifurcation point and work with ancient revisions (before bifurcation) will give (can give) some headache
1
дададзена

Я б паспрабаваць вырашыць кіраванне залежнасцямі па-за SVN (думае Apache Maven або Ivy ў Javaverse).

Калі ён павінен быць SVN, як аб спецыяльных імёнах тэгаў? Такім чынам, вы маглі б увесці пагадненне, што ваша сістэма зборкі выглядае ў спецыяльных папках для версій гэта залежыць ад таго, як /Module1/branches/deps/Project1/Rel-1.0 для кода вашай Rel-1,0 Пабудова Проект1 неабходна.

/Project1/branches
          /tags/Rel-1.0
          /trunk
/Module1/branches
           /tags/Rel-1.0
           ...
           /tags/Rel-2.0
           /deps/Project1/Rel-1.0
           /deps/Project1/Rel-1.1
           /trunk
/Module2/branches
           /tags/Rel-1.0
           ...
           /tags/Rel-2.1         
           /deps/Project1/Rel-1.0
           /deps/Project1/Rel-1.1
           /trunk

Вы можаце стварыць тэчкі для утрыманцаў шляхам спасылкі на папкі тэгаў:

# dependencies to Module1
svn cp http://myServer/svn/Module1/branches/tags/Rel-1.0 http://myServer/svn/Module1/branches/deps/Project1/Rel-1.0
svn cp http://myServer/svn/Module1/branches/tags/Rel-2.0 http://myServer/svn/Module1/branches/deps/Project1/Rel-1.1
# dependencies to Module2
svn cp http://myServer/svn/Module2/branches/tags/Rel-1.0 http://myServer/svn/Module1/branches/deps/Project1/Rel-1.0
svn cp http://myServer/svn/Module2/branches/tags/Rel-2.0 http://myServer/svn/Module1/branches/deps/Project1/Rel-1.1

Пераключэнне версій пазней будзе выглядаць

# delete old reference
svn rm http://myServer/svn/Module1/branches/deps/Project1/Rel-1.1
# make other one for new version
svn cp http://myServer/svn/Module1/branches/tags/Rel-2.1 http://myServer/svn/Module1/branches/deps/Project1/Rel-1.1

Недахоп гэтага падыходу можа быць больш месца патрабуецца для працоўных каталогаў SVN.

1
дададзена
Я думаю, што праблема з гэтым падыходам з'яўляецца, што SVN не створаная для гэтага матэрыялу. Вам прыйдзецца стварыць некаторыя уласны працэс зборкі (няхай гэта будзе з макіяжам, CMake ці нешта іншае), які счытвае метададзеныя з Repo або рабочай копіі і будуе правільны матэрыял адпаведна. Прынамсі, чытанне можа быць зроблена прыгожа з дапамогай xml (напрыклад, СВН Ls --xml HTTP://сервер/РЭПО/шлях/да/спіс у камандным радку). Іншы падыход можа быць, што вы змясцілі файл у шляху вашага праекта або модуля, які апісвае яго бягучая залежнасць. Гэта ў сваю чаргу можа быць прачытаны з дапамогай інструмента зборкі і дзеяння.
дададзена аўтар chabicht, крыніца
Я зусім забыўся відавочнае рашэнне: калі вы карыстаецеся інструмент зборкі, як макіяж, вы ўжо атрымалі файл пад кантролем версій вы можаце змясціць апісанне залежнасцяў у: <я> Makefile, ...: о)
дададзена аўтар chabicht, крыніца
Мае праекты ў C ++. Некаторыя кампаненты таксама бібліятэка трэцяй бокам. Мая першая мэта складаецца, каб знайсці лепшыя арганізацыі праекта і бібліятэкі для рэпазітара. Мая другая мэта складаецца ў тым, каб убачыць, калі пад SVN я магу лёгка пазнаць, і аўтаматычна кіраваць як складаецца дадатак (якія модулі ўбудаваныя і з якой версіі)
дададзена аўтар Manu13, крыніца