Копирайте само определени SVN ревизии от едно хранилище в друго

Пускам SVN сървър на линукс сървър. Отивам извън града за една седмица някъде без достъп до интернет и следователно без достъп до SVN.

Така че се опитвам да разбера как да направя моментна снимка на хранилището с мен на моя лаптоп и след това да обединя новите ревизии обратно в съществуващото хранилище, когато се върна...

  • Моят лаптоп работи с Windows 7, така че първо мисля, че VisualSVN Server вероятно е сървърът, който ще стартирам локално .

  • Трябва да мога да изхвърля текущото си хранилище и след това да го заредя в ново хранилище на моя лаптоп

  • Но това, за което не съм сигурен, е когато се върна от града. Ще имам всички тези нови ревизии на SVN сървъра на моя лаптоп. Как да изхвърля и след това да заредя само тези нови ревизии в хранилището на моя Linux сървър?

  • Ако използвам >svnadmin dump --revision 50:75 (приемайки, че ревизии от 50 до 75 представляват новите ревизии, които съм направил на моя лаптоп), мога ли просто да заредя този дъмп файл в моето съществуващо хранилище на моя Linux сървър? Толкова ли е лесно? Знам, че има някои неща по отношение на UUID на хранилището, които могат да причинят някои проблеми...

  • Още една забележка, аз съм единственият разработчик, който допринася за това SVN хранилище в момента. Така че няма да е необходимо обединяване на кодове.

АКТУАЛИЗАЦИЯ

Не знаех, че мога да получа локален достъп до хранилище просто с помощта на file:///. Така че това вероятно ще работи по-добре, отколкото да се налага да стартирате VisualSVN Server. Основният въпрос обаче все още остава: Как да получа новите ревизии от едно хранилище в друго?


person Jake Wilson    schedule 29.06.2010    source източник
comment
Погледнете в Git. Той има мост към Subversion, за да ви позволи да се ангажирате локално и след това да прехвърлите всички ангажименти обратно към SVN. Не публикувам това като отговор, тъй като това означава малко крива на обучение, което може да не успеете да направите, преди да излезете извън града.   -  person Agent_9191    schedule 29.06.2010


Отговори (4)


Ако сте единственият разработчик, може би можете просто да вземете хранилището със себе си.

Достъп до него с протокола file:///, докато сте далеч, след което го поставете обратно на сървъра, когато се върнете. . .

person William Leara    schedule 29.06.2010
comment
Възнамерявах да го взема със себе си. Но как да копирам само новите ревизии от хранилището на лаптопа обратно в оригиналния svn сървър? Или предлагате да изтрия съществуващия SVN сървър и да изхвърля/заредя цялото хранилище от моя лаптоп в ново на моя сървър? - person Jake Wilson; 29.06.2010
comment
Предлагах да вземете всичко със себе си... т.е. директорията на сървъра, която съдържа директориите conf, db, hooks и т.н. -- просто копирайте тази директория от сървъра на вашия лаптоп. Достъп до него като svn checkout file:///c:/svn/repos. Когато се върнете, изтрийте директорията на хранилището на сървъра и копирайте вашето локално копие от лаптопа. - person William Leara; 29.06.2010
comment
... нещо като "направи си сам" разпределена SVN система за контрол на източника. :) - person William Leara; 29.06.2010

За да извлечете набор от ревизии (nn до mm) от хранилище:

svnadmin dump --incremental -r nn:mm /path/to/repository > /path/to/dumpfile.svn

Опцията --incremental ви позволява да обедините този набор от промени, без да носите цялата базова линия заедно с импортирането.

За да приложите тези ревизии към хранилище:

svnadmin load --ignore-uuid /path/to/repository < /path/to/dumpfile.svn

Опцията --ignore-uuid позволява импортирането да премахне uuid информация от изходното хранилище.

Бих ограничил тази операция до хранилища с общо наследство на ревизии, в противен случай зареждането вероятно ще се провали.

person Amardeep AC9MF    schedule 29.06.2010

Бих препоръчал да направите git или mercurial локално хранилище точно върху вашето локално работно копие.

Можете да добавите .svn папките и артефактите към .hgignore или .gitignore файловете, за да поддържате хранилището чисто, а след това, когато се върнете, можете просто да направите svn комит на промените, или ако искате да станете по-удобни, направете поетапно връщане към подривна дейност за всяка значима единица работа, която сте проверили в mercurial/git, докато сте били на път.

И двете репо правят наистина лесно поддържането на вашето собствено локално работно копие в контрола на ревизиите и лесното синхронизиране с дефинираните точки за влизане в хронологията.

person John Weldon    schedule 29.06.2010
comment
Дори бих отишъл по-далеч и бих използвал инструменти като hgsvn или git-svn, които могат автоматично да копират локалната история в subversion. - person Rudi; 29.06.2010

Един несложн подход би бил просто да проверите всичко, от което се нуждаете, да работите малко, да играете малко, да работите още малко, да се наслаждавате на обкръжението си, да се запознаете с нови хора, да работите още малко и след това, когато се върнете, да се ангажирате. Седмица може да изглежда като дълъг период от време, без да се ангажирам, но когато съм далеч, особено онези места без интернет, съм склонен да не върша ПОЧТИ толкова много работа, колкото съм възнамерявал.

WinZip може да ви помогне, ако от време на време трябва да направите моментна снимка за „запазване на играта“.

person Chris Thornton    schedule 30.06.2010