Linux за българи: Форуми

Linux секция за напреднали => Хардуерни и софтуерни проблеми => Темата е започната от: sana в Mar 18, 2007, 20:12



Титла: Cvs mirror ?
Публикувано от: sana в Mar 18, 2007, 20:12
Здравейте,
Някой знае ли дали е възможно да се направи "огледало" на CVS сървър, така че работата с двата сървъра да е напълно прозрачна (ако commit-неш в единия, промените автоматично да се приложат в другия). При моето търсене в интернет попадах на решения с rsync, но това не е приложимо за динамична работа ...
Мерси предварително


Титла: Cvs mirror ?
Публикувано от: tarator в Mar 18, 2007, 20:34
Можеш да опиташ с rsync и скриптовете в CVSROOT, които се изпълняват всеки път когато се прави commit.


Титла: Cvs mirror ?
Публикувано от: dilyan_rusev в Mar 18, 2007, 20:36
може би скрипт, който да cvs commit-ва едновременно и в двата сървъра (всъчщност да повтаря комнадата във втория). поне за това се сещам - може би има по-лесно решение, но нали и аз съм новичък в cvs и не мога да се сетя :)

редакция:

например:
Примерен код

#!/bin/bash

# употреба:
# [ ако се казва cvssync.sh ]
# bash cvssync аргументи
# все едно
# cvs аргументи
# ако ползваш локален cvs

# първо правим променливи за улеснение:

server1='-z3 -d :ext:my_user@my_project.cvs.sourceforge.net:/cvsroot/my_project'
server2='-z3 -d :ext:my_user@my_next_project.cvs.sourceforge.net:/cvsroot/my_next_project'

# след това четем аргументите и ги предаваме на
# cvs със $* - ако се лъжа, поправете ме

# извикваме първия сървър:
cvs $server1 $*

# извикваме втория сървър:
cvs $server2 $*


пп: още съм нов и във cvs, и в bash - така че ме поправете ако греша някъде, но попринцип не виждам дупка в логиката...





Титла: Cvs mirror ?
Публикувано от: Hapkoc в Mar 19, 2007, 11:30
Има комерсиални решения, примерно: http://www.wandisco.com/php/product_detail.php?lname=cvs

Има и с отворен код, но там има някои изисквания към процеса на разработка (всяка група разработчици, ползваща един сървър работи в отделен клон май): http://dcvs.elegosoft.com/doc/dcvs_overview.html


dilyan_rusev, не е читаво по тоя начин. Commit-ваш да кажем в първия сървър, но през това време някой е commit-нал на втория файл, който и ти се опитваш да commit-неш. Получава се неконсистентност м/у двете машини, която трябва да се разрешава на ръка. Отделно, че трябва на всяка работна станция да подсигуриш, че винаги ще се използва въпросния скрипт, а не оригиналния cvs клиент.


Титла: Cvs mirror ?
Публикувано от: dilyan_rusev в Mar 19, 2007, 18:12
Цитат (Hapkoc @ Март 19 2007,11:30)
dilyan_rusev, не е читаво по тоя начин. Commit-ваш да кажем в първия сървър, но през това време някой е commit-нал на втория файл, който и ти се опитваш да commit-неш. Получава се неконсистентност м/у двете машини, която трябва да се разрешава на ръка. Отделно, че трябва на всяка работна станция да подсигуриш, че винаги ще се използва въпросния скрипт, а не оригиналния cvs клиент.

ъъ нещо не разбрах това с commit-ването. то не съществува ли попринцип този проблем и ако си го пишеш на ръка - тоест cvs commit по отделно за всеки сървър? пък това за многото копютри - аз разбрах, че sana ще работи на един и ще препраща към няколко.

не се заяждам - както казах съм нов (само от няколко месеца съм с линукс и едва от седмица ми се налага да ползвам cvs за един проект в sourceforge.net) и искам да разбера нещо ново (както и къде греша).


Титла: Cvs mirror ?
Публикувано от: Hapkoc в Mar 19, 2007, 18:24
dilyan_rusev, абсолютно, проблема си съществува и ако на ръка commit-ваш в двете хранилища.

Идеята, доколкото разбирам, е да има две (или повече) хранилища и всеки разработчик да работи с едно от тях (update/commit/tag/etc) като промените автоматично да се разхвърлят по останалите. Ако е нужно всеки конфликт да се разрешава на ръка, при малко по-голям брой разработчици ще стане ад за поддръжка.

Търсил съм подобно решение, но единственото което намерих open source е DCVS, към което съм дал връзка. Иначе може сравнително лесно да се направи read-only CVS огледало, примерно както казва tarator - с rsync и post-commit скрипт. Проблема е именно като трябва да може да се commit-ва във всеки сървър, как да се гарантира, че няма да се замаже нечий труд.


п.п. и аз не се заяждам. дано си ме разбрал този път


Титла: Cvs mirror ?
Публикувано от: tarator в Mar 19, 2007, 18:42
Вероятно няма да е ужасно трудно да се направи rw копие с pre-/post-commit скриптове, но въпросът дали има смисъл? :)


Титла: Cvs mirror ?
Публикувано от: dilyan_rusev в Mar 19, 2007, 21:17
ами май разбрах. само дето като се замисля, то няма начин да няма проблеми - то винаги трябва да се викне cvs update в отделна папка за да се види кой какви промени е направил. без читаво управление на проекта не виждам как cvs въобще може да помогне с нещо - номерът е всеки да си има точно определена задача, за да не се "препокрива" работата на разработчиците...

ако и сега не съм разбрал, господ да ми е на помощ :D :D :D


Титла: Cvs mirror ?
Публикувано от: sana в Mar 27, 2007, 20:14
Благодара за отговорите !!!
Всъщност, оказа се, че проблема си е много стар и е един от многото, които просто са заложени в архитектурата на CVS. Старичка е и за това не мога да съм недоволен (през 1986 си е била съвсем наред, но днес ...). До колкото разбрах, разработчиците са са я изоставили и са стартирали "новия" проект SVN, та може би това ще е следващия ми избор. Проучвам още ...