Что выбрать: CVS, ClearCase, StarTeam

ccase
Новичок
Posts: 36
Joined: 06 Sep 2003 20:29

Re: Что выбрать: CVS, ClearCase, StarTeam

Post by ccase »

theukrainian wrote:А почему perforce никто не рекомендует? У нас стоит, и работает достаточно без-глючно и удобно.
www.perforce.com
денис


Perforce - overpriced. Лицензия требуется на каждого заведенного пользователя - $750-450
Даже ClearCase дешевле.
Вот, к примеру, есть у нас один сайт - 450 активных пользователей за последний месяц. Лицензионный пул - 83 лицензии.
За перфорсе мы бы заплатили:
20*750 + 30*700 + 50*650 + 150*600 + 200*550 = $268,500
ClearCase:
83 * 3200 = $265,600

Это реальные цифры. ClearCase, в большинстве случаев, используется по полной программе - с Dynamic Views, etc.

Удачи!
Big Cheese
Уже с Приветом
Posts: 1211
Joined: 02 Jul 2000 09:01
Location: SFBA

Re: Что выбрать: CVS, ClearCase, StarTeam

Post by Big Cheese »

ccase wrote:
theukrainian wrote:А почему perforce никто не рекомендует? У нас стоит, и работает достаточно без-глючно и удобно.
www.perforce.com
денис


Perforce - overpriced. Лицензия требуется на каждого заведенного пользователя - $750-450
Даже ClearCase дешевле.
Вот, к примеру, есть у нас один сайт - 450 активных пользователей за последний месяц. Лицензионный пул - 83 лицензии.
За перфорсе мы бы заплатили:
20*750 + 30*700 + 50*650 + 150*600 + 200*550 = $268,500
ClearCase:
83 * 3200 = $265,600

Это реальные цифры. ClearCase, в большинстве случаев, используется по полной программе - с Dynamic Views, etc.

Удачи!
Shared licenses это конечно очень здорово и прогрессивно, и все такое. Технически это тоже достаточно несложно реализуется, и ClearCase в этом не уникален. Проблема в том, что это все хорошо выглядит в основном в рекламных буклетах, или под ритмичные звуки бубнов sales people. На деле оказывается, что нагрузка на сервер вовсе не размазана равномерно по 24 часам в сутках (unless у вас в команде завелась банда злобных хакеров-полуночников). Ибо все остальные люди имеют странную привычку приходить на работу примерно в одно и тоже время и первым делом синхронизироваться с version control server'ом - наверно, в тайне надеются, что их баги уже кто-то пофиксил. В результате получается нечто похожее на очередь в туалет в коммунальной квартире по утрам, ну, может накал страстей не тот. Кстати, к вопросу о багах - в Вашей выкладке учтены лицензии на ClearQuest? А то без bug tracking tool жить довольно грустно...

Вобщем, license pool это такой изящный способ одновременно снизить пиковую нагрузку на сервер (которая у многих систем, в том числе и CC, достаточно больной вопрос) и убедить кастомера в том, что он сэкономил кучу денег :wink:

disclaimer: я не агитирую против ClearCase - любая система имеет свои плюсы и минусы и хороша для своего круга задач. Я даже восторгаюсь маркетингом Rational в том плане, что они создали религию, уступающую разве что линуксу по степени экстаза :mrgreen: , причем в отличии от последней дерут за это неслабые деньги :umnik1:
ccase
Новичок
Posts: 36
Joined: 06 Sep 2003 20:29

Re: Что выбрать: CVS, ClearCase, StarTeam

Post by ccase »

Big Cheese wrote:
ccase wrote:
theukrainian wrote:А почему perforce никто не рекомендует? У нас стоит, и работает достаточно без-глючно и удобно.
www.perforce.com
денис

Perforce - overpriced. Лицензия требуется на каждого заведенного пользователя - $750-450
Даже ClearCase дешевле.
...
Это реальные цифры. ClearCase, в большинстве случаев, используется по полной программе - с Dynamic Views, etc.

Удачи!
Shared licenses это конечно очень здорово и прогрессивно, и все такое. Технически это тоже достаточно несложно реализуется, и ClearCase в этом не уникален. Проблема в том, что это все хорошо выглядит в основном в рекламных буклетах, или под ритмичные звуки бубнов sales people. На деле оказывается, что нагрузка на сервер вовсе не размазана равномерно по 24 часам в сутках (unless у вас в команде завелась банда злобных хакеров-полуночников). Ибо все остальные люди имеют странную привычку приходить на работу примерно в одно и тоже время и первым делом синхронизироваться с version control server'ом - наверно, в тайне надеются, что их баги уже кто-то пофиксил. В результате получается нечто похожее на очередь в туалет в коммунальной квартире по утрам, ну, может накал страстей не тот.

При всем моем уважении, это "теории". Я же практик.
И мои подсчеты основаны на реальных данных.
Для примера, я включил статистику с 3х сайтов.
ClearCase Сайт 1 - это как раз тот, о котором говорилось в предыдущем примере.
Если быть точным (на результат это не влияет) - 411 пользователей в августе, максимальное количество запрошенных лицензий - 78
ClearCase Сайт 2 - 491 пользователь, максимальное количество запрошенных лицензий - 114
ClearCase Сайт 3 - 73 пользователя, максимальное количество запрошенных лицензий - 26
Как видно, чем больше цифры, тем дешевле ClearCase. Сейчас мы собираемся централизовать лицензии с разных сайтов - кроме достоинства "больших чисел" на нас будет играть разница временных зон Индии, Великобритании, и 4-х штатовских тайм зон.

Big Cheese wrote:Кстати, к вопросу о багах - в Вашей выкладке учтены лицензии на ClearQuest? А то без bug tracking tool жить довольно грустно...

ClearQuest не учтен. Данные были для честного сравнения с Perforce.
Как я уже упоминал, согласно специфики использования, стоимость ClearQuest около 320-640 долларов на пользователя.
Могу тоже привести примеры "живой" статистики - сайт в 320 пользователей в августе, максимальное количество лицензий - 39 (а обычно менее 30 в пике).
Самое интересное, что заведенных пользователей там более 1100 - кому-то ClearQuest нужен только раз в квартал, кому-то было просто НАДО (а как поставили, так и не особо пользуемся).
Частенько, у вас бывают пользователи, которым надо Submitтить баги например, и отслеживать их состояние. В ClearQuest Web, вы можете сконфигурить "Restricted users" - они имеют возможность добавлять записи и запускать стандартный запрос (который Вы определите). Эти пользователи не потребляют лицензии!
Еще одна особенность - при использовании Perl с ClearQuest API лицензия вообще не потребляется. У меня так работают ряд скриптов, который публикуют популярные CQ отчеты на Web по запросу пользователя.
Big Cheese wrote:Вобщем, license pool это такой изящный способ одновременно снизить пиковую нагрузку на сервер (которая у многих систем, в том числе и CC, достаточно больной вопрос) и убедить кастомера в том, что он сэкономил кучу денег :wink:


Никто нагрузку не снижает, как я уже показал, недостатка лицензий не допускается.
К тому же, для ClearCase проблема нагрузки на сервер не является больным вопросом - система изначально разрабатывалась как распределенная.
В данном случае я даже не имею ввиду MultiSite. Имеется ввиду, что сколько угодно независимых серверов, с различными операционными системами, могут работать (и работают в реальной жизни) как один репозиторий.
ClearCase расширяем. Он может занимать только один компьютер, а может включать сколько угодно отдельно стоящих VOB/view server-ов и клиентов, как единая инсталляция.

Плавающая лицензия удобна. Если количество пользователей более четырех-пяти. Это реально экономит деньги.
Опять же, у меня нет проблем, если кто-то желает "попробовать" ClearCaseClearQuest/etc. Чтоб сделать pilot мне ненадо идти к вендору и выпрашивать временные лицензии. +5 пользователей к лицензионному пулу погоды не делает. Особенно, если "пробуют" они в свободное от основной работы время - не во время пиковой нагрузки.
Big Cheese wrote:disclaimer: я не агитирую против ClearCase - любая система имеет свои плюсы и минусы и хороша для своего круга задач. Я даже восторгаюсь маркетингом Rational в том плане, что они создали религию, уступающую разве что линуксу по степени экстаза :mrgreen: , причем в отличии от последней дерут за это неслабые деньги :umnik1:


То есть Вы не допускаете, что ClearCase как система, получилась весьма удачной? И именно поэтому завоевала столь широкую популярность? :)
Систему 1990-го года рождения, написанную горсткой "горячих парней" из Массачусеттса, до сих пор не могут переплюнуть более современные собратья. :)
А на счет неслабых денег - я уже пояснил на примере с Perforce.

Удачи!
You do not have the required permissions to view the files attached to this post.
Big Cheese
Уже с Приветом
Posts: 1211
Joined: 02 Jul 2000 09:01
Location: SFBA

Re: Что выбрать: CVS, ClearCase, StarTeam

Post by Big Cheese »

ccase wrote:При всем моем уважении, это "теории". Я же практик.
И мои подсчеты основаны на реальных данных.
Для примера, я включил статистику с 3х сайтов...
ОК, сдаюсь, сдаюсь! :) У меня нет такой статистики, только некоторая аналитика, которую я привести не могу, по-этому поднимаю руки вверх.
ccase wrote:Никто нагрузку не снижает, как я уже показал, недостатка лицензий не допускается.
К тому же, для ClearCase проблема нагрузки на сервер не является больным вопросом - система изначально разрабатывалась как распределенная.
В данном случае я даже не имею ввиду MultiSite. Имеется ввиду, что сколько угодно независимых серверов, с различными операционными системами, могут работать (и работают в реальной жизни) как один репозиторий.
Да, архитектура ClearCase весьма мощная и сложная - я согласен. Я имел в виду, что отдельно взятый ClearCase server box проигрывает по производительности тому же Perfore или StarTeam (хотите - верьте, хотите - нет), но в отличие от них масштабируется при добавлении новых box'ов - при этом производительность с точки зрения отдельного пользователя тоже не прет вверх, зато система "тянет" значительно больше одновременно работающих пользователелей. Но это проявляется, когда счет идет на тысячи, насколько я знаю.
ccase wrote:
Big Cheese wrote:disclaimer: я не агитирую против ClearCase - любая система имеет свои плюсы и минусы и хороша для своего круга задач. Я даже восторгаюсь маркетингом Rational в том плане, что они создали религию, уступающую разве что линуксу по степени экстаза :mrgreen: , причем в отличии от последней дерут за это неслабые деньги :umnik1:


То есть Вы не допускаете, что ClearCase как система, получилась весьма удачной? И именно поэтому завоевала столь широкую популярность? :)
Систему 1990-го года рождения, написанную горсткой "горячих парней" из Массачусеттса, до сих пор не могут переплюнуть более современные собратья. :)
А на счет неслабых денег - я уже пояснил на примере с Perforce.
Удачи!
Да допускаю, конечно! Linux тоже достаточно удачный проект, судя по всему. Только вот от звуков священного бубна у меня лично уши болят, чесно слово. А так Rational судя по всему весьма технологичная компания была. Насчет горстки горячих парней - горстка была горсткой в начале 90х - насколько мне помнится, на момент покупки в Rational работало около 3600 человек (да, я в курсе, что они не только CC выпускают - тем не менее, в Perforce работают около 60 человек, в StarBase в лучшие годы было ~400, над всей линейкой StarTeam и сопутствующих проектов работает десятка два инженеров)
ccase wrote:Удачи!
(*неуверенно*)uncle_Pasha?
ccase
Новичок
Posts: 36
Joined: 06 Sep 2003 20:29

Re: Что выбрать: CVS, ClearCase, StarTeam

Post by ccase »

Big Cheese wrote:Да, архитектура ClearCase весьма мощная и сложная - я согласен. Я имел в виду, что отдельно взятый ClearCase server box проигрывает по производительности тому же Perfore или StarTeam (хотите - верьте, хотите - нет),

Для ClearCase есть одно золотое правило - как только позволяют средства, etc - ставить отдельный VOB server(s) (на котором нет view, нет других процессов)
Как, к стати, Вы сравниваете производительность?
Build в MVFS vs билд на локальной системе? время update не забываете добавить? Build c clearmake vs make?
постановка лейблов или выборка элементов по label? первое достаточно редкая операция по сравнению со второй.
Беда в том, что методики оценки производительности, как правило, заточены на подчеркивание достоинств определенной системы и потому предвзяты изначально.

Big Cheese wrote:насколько мне помнится, на момент покупки в Rational работало около 3600 человек (да, я в курсе, что они не только CC выпускают - тем не менее, в Perforce работают около 60 человек, в StarBase в лучшие годы было ~400, над всей линейкой StarTeam и сопутствующих проектов работает десятка два инженеров)

Можно уточнить, на момент какой из покупок? :)
И сколько из этих работников было на самом деле field consultants, а сколько работало в девелопменте? И сколько из последних в Lexington?
Насколько я знаю, там и до сих пор достаточно небольшая группа, кормящая Буча со товарищи. :)

Удачи!
nickb
Уже с Приветом
Posts: 3207
Joined: 08 Aug 1999 09:01
Location: Tampa, FL

Post by nickb »

Я работал почти год с PVCS - более неудобного средства еще не видел. Сейчас контора работает под CVS. При мне - года 3 уже. По слухам - гораздо дольше.
Куча репозиториев, проектов и более 100 местных девелоперов. Регулярные релизы и т.п. Короче, все довольны, все работает. Контора моя - Verizon :)
Big Cheese
Уже с Приветом
Posts: 1211
Joined: 02 Jul 2000 09:01
Location: SFBA

Re: Что выбрать: CVS, ClearCase, StarTeam

Post by Big Cheese »

ccase wrote:
Big Cheese wrote:Да, архитектура ClearCase весьма мощная и сложная - я согласен. Я имел в виду, что отдельно взятый ClearCase server box проигрывает по производительности тому же Perfore или StarTeam (хотите - верьте, хотите - нет),

Для ClearCase есть одно золотое правило - как только позволяют средства, etc - ставить отдельный VOB server(s) (на котором нет view, нет других процессов)
Как, к стати, Вы сравниваете производительность?
Build в MVFS vs билд на локальной системе? время update не забываете добавить? Build c clearmake vs make?
постановка лейблов или выборка элементов по label? первое достаточно редкая операция по сравнению со второй.
Беда в том, что методики оценки производительности, как правило, заточены на подчеркивание достоинств определенной системы и потому предвзяты изначально.
Методики, о которых Вы говорите, предназначены как правило для sales & marketing people :wink: Для внутреннего потребления обычно используется некий набор интегральных и operation specific тестов, который предназначен прежде всего для:
-выявления собственных bottlenecks
- получения более-менее объективной картины производительности по сравнению с конкурентами на типовых операциях с несколькими типовыми для целевого сегмента рынка наборами данных
- build-to-build performance regressions/improvments checks
- stress testing и border conditions - не совсем performance, но около того
Т.е. тут цель скорее обратная высказанной Вами - выявить как можно больше слабых мест в собственном продукте. Конкретный набор тестов я по понятным причинам предъявить не могу :( . Кроме того, каждый продукт имеет свои специфические фичи, каких-то стандартизированных тестов - навроде TPC для баз данных - для version control systems нет, так что я согласен с тем, что это не может быть подано как аргумент в споре (но мы ведь и не спорим, по большому счету, правда? :) ); по-этому я и оговорился - "хотите - верьте, хотите - нет".
ccase wrote:
Big Cheese wrote:насколько мне помнится, на момент покупки в Rational работало около 3600 человек (да, я в курсе, что они не только CC выпускают - тем не менее, в Perforce работают около 60 человек, в StarBase в лучшие годы было ~400, над всей линейкой StarTeam и сопутствующих проектов работает десятка два инженеров)

Можно уточнить, на момент какой из покупок? :)
И сколько из этих работников было на самом деле field consultants, а сколько работало в девелопменте? И сколько из последних в Lexington?
Насколько я знаю, там и до сих пор достаточно небольшая группа, кормящая Буча со товарищи. :)
На момент покупки Rational'а IBM'ом. Сколько девелоперов работает над ClearCase я, понятно, не знаю. Думаю, что в целом в компании около 15-20 процентов от общего числа сотрудников - программисты, т.е. примерно 500-700 человек, что немало, даже учитывая количество продуктов Rational'а .

Удачи!
User avatar
Alf
Уже с Приветом
Posts: 465
Joined: 30 May 2001 09:01
Location: Edinburgh, UK

Re: Что выбрать: CVS, ClearCase, StarTeam

Post by Alf »

Big Cheese wrote:
ccase wrote:Удачи!
(*неуверенно*)uncle_Pasha?


Точно он! Никаких сомнений!
No problem!
User avatar
Alf
Уже с Приветом
Posts: 465
Joined: 30 May 2001 09:01
Location: Edinburgh, UK

Re: Что выбрать: CVS, ClearCase, StarTeam

Post by Alf »

ccase wrote:
Alf wrote:Нет необходимости в выделенном build manager

А как это связано с Вашим решением?


Отсутствие соответствующего ресурса.

ccase wrote:
Alf wrote:и толпы администраторов.

Что, даже UNIX/Network и DB никто не администрит? :)


Вы, наверное, не поверите. Но никто этим не занимается. Установили, настоили единоразово, организовали back-up. И все... Больше этого сервера никто не касается. Работает сам по себе уже четыре месяца без единой проблемы. Что особенно поразит ненавистников Microsoft, при этом используется Windows XP и MS SQL Server.
No problem!
ccase
Новичок
Posts: 36
Joined: 06 Sep 2003 20:29

Re: Что выбрать: CVS, ClearCase, StarTeam

Post by ccase »

Alf wrote:
ccase wrote:
Alf wrote:Нет необходимости в выделенном build manager

А как это связано с Вашим решением?

Отсутствие соответствующего ресурса.

Наличие или отсутствие "отдельно стоящего" build manager более зависит от процесса и нагрузки, чем от используемых средств. Я видел как выделенных build managers в случае CVS/VSS/etc, так и ClearCase, без таковых, как и последний, администрируемый одним-двумя девелоперами "по совместительству.
Так что к выбору средств это имеет весьма опосредованное отношение.

Вот отдельный от всего build environment - это обязательно. Вне зависимости от используемого репозитория. C ClearCase это организовать несколько легче - запихал все, что надо (библиотеки, компиляторы и т.п.) в репозиторий, и на любом боксе билдь что угодно - никаких тебе муторных апдейтов, проблем (а с каким JDK надо билдить релих XXX? да с тем что залейблен этим релизом!)
MVFS - рулез форева.

Удачи!
User avatar
Alf
Уже с Приветом
Posts: 465
Joined: 30 May 2001 09:01
Location: Edinburgh, UK

Re: Что выбрать: CVS, ClearCase, StarTeam

Post by Alf »

ccase wrote:Наличие или отсутствие "отдельно стоящего" build manager более зависит от процесса и нагрузки, чем от используемых средств. Я видел как выделенных build managers в случае CVS/VSS/etc, так и ClearCase, без таковых, как и последний, администрируемый одним-двумя девелоперами "по совместительству.
Так что к выбору средств это имеет весьма опосредованное отношение.


Для ClearCase нужно администрирование иначе никак. Это как бы могут делать девелоперы, но все равно оно нужно. При размере команды в 10 человек, ведущих активную разработку, уже навряд ли удастся обойтись без выделенного build manager.

В StarTeam мы прекрасно обходимся без этого.

ccase wrote:Вот отдельный от всего build environment - это обязательно. Вне зависимости от используемого репозитория. C ClearCase это организовать несколько легче - запихал все, что надо (библиотеки, компиляторы и т.п.) в репозиторий, и на любом боксе билдь что угодно - никаких тебе муторных апдейтов, проблем (а с каким JDK надо билдить релих XXX? да с тем что залейблен этим релизом!)
MVFS - рулез форева.


StarTeam позволяет делать все тоже самое.
No problem!
ccase
Новичок
Posts: 36
Joined: 06 Sep 2003 20:29

Re: Что выбрать: CVS, ClearCase, StarTeam

Post by ccase »

Alf wrote:
ccase wrote:Наличие или отсутствие "отдельно стоящего" build manager более зависит от процесса и нагрузки, чем от используемых средств. Я видел как выделенных build managers в случае CVS/VSS/etc, так и ClearCase, без таковых, как и последний, администрируемый одним-двумя девелоперами "по совместительству.
Так что к выбору средств это имеет весьма опосредованное отношение.

Для ClearCase нужно администрирование иначе никак. Это как бы могут делать девелоперы, но все равно оно нужно.

1. что именно понимается под администрированием ClearCase? Без которого не обойтись?
Любой репозиторий надо администрить. Узеров там заводить (в CC, к стати этого не надо), код закачивать из других мест и т.п.
Alf wrote:При размере команды в 10 человек, ведущих активную разработку, уже навряд ли удастся обойтись без выделенного build manager.

Это не зависит от CC.
Я бы перефразировал - любой команде в 10 человек, ведущих активную разработку, уже навряд ли удастся обойтись без Software Configuration Manager-а. И это не зависит от используемых тулзов.
Просто одни средства достаточно бедны на возможности (тот же CVS, при всем моем уважении), а другие богаты.
И тут две проблемы:
1. хорошо бы получить консультацию (заплатить за нее), как эту мощь использовать в мирных целях (согласно техническим (и не только) требованиям к процессу разработки) - но жаба душит. Потому кувыркаемся и упражняемся, кто во что горазд. Так и не одного SCM "работой" загрузить можно, а целый отдел.
2. как только имплементировано то, что хотелось, хочется чего-то больше. Аппетит приходит во время еды, так сказать. А тут еще и тулзы позволяют. В этом случае эта штатная единица (SCM) работает, все-таки не на ClearCase, а на Вас - улучшает Ваш процесс, согласно вновь появившимся требованиям.

Опять же, согласно моей статистике, 1 FTE (Full Time Employee) достаточно на 100 пользователей, для поддержки как случая (1) так и (2).
Alf wrote:В StarTeam мы прекрасно обходимся без этого.
ccase wrote:MVFS - рулез форева.

StarTeam позволяет делать все тоже самое.

Что именно? Labels ставить? не сомневаюсь. Речь шла о другом.
Если у меня есть совершенно "голый" UNIX host - не установленно ни компиляторов, ни библиотек - только ClearCase, установка которого занимает 5-15 минут и не требует рестарта на большинстве UNIX (HP-UX - исключение),
то чтобы сделать из него билд хост и запустить совершенно "чистый" билд (все библиотеки и компиляторы /это не всегда осуществимо, но с java, например пройдет/ из репозитория и правильной версии - той, которой надо для этого билда) мне надо секунд 5 и несколько команд:
1. ct mkview -tag my_build_view -stgloc -auto #создать "чистое" view
2. ct setcs -tag my_build_view my_build_configuration # установить конфигурацию - и я уже вижу все, что надо.
3. cd куда_надо ;
4. make/clearmake/ant/etc
и меня не волнует, что там есть какие-то библиотеки, каких-то версий, огромных размеров и т.п.
Запустить предыдущий билд, с другим JDK, например, на том же хосте - тоже 5 секунд.
То, что и имел ввиду - никаких муторных апдейтов и т.п. Полезно и безопасно.
Можно это реализовать другим способом? Несомненно. Но это будет не то.

Удачи!
Big Cheese
Уже с Приветом
Posts: 1211
Joined: 02 Jul 2000 09:01
Location: SFBA

Post by Big Cheese »

ccase wrote:Что именно? Labels ставить? не сомневаюсь. Речь шла о другом.
Если у меня есть совершенно "голый" UNIX host - не установленно ни компиляторов, ни библиотек - только ClearCase, установка которого занимает 5-15 минут и не требует рестарта на большинстве UNIX (HP-UX - исключение),
то чтобы сделать из него билд хост и запустить совершенно "чистый" билд (все библиотеки и компиляторы /это не всегда осуществимо, но с java, например пройдет/ из репозитория и правильной версии - той, которой надо для этого билда) мне надо секунд 5 и несколько команд:
1. ct mkview -tag my_build_view -stgloc -auto #создать "чистое" view
2. ct setcs -tag my_build_view my_build_configuration # установить конфигурацию - и я уже вижу все, что надо.
3. cd куда_надо ;
4. make/clearmake/ant/etc
и меня не волнует, что там есть какие-то библиотеки, каких-то версий, огромных размеров и т.п.
Запустить предыдущий билд, с другим JDK, например, на том же хосте - тоже 5 секунд.
То, что и имел ввиду - никаких муторных апдейтов и т.п. Полезно и безопасно.
Можно это реализовать другим способом? Несомненно. Но это будет не то.
Давайте определимся - вам шашечки или ехать?) (с) :) Если "ехать", то почему, собственно, "не то"? По-моему то, что Вы описали, ничем функционально не отличается от - грубо говоря - checkout *.* by label - только отсутствием clean / checkout commands в build script. Т.е. доступно в любой вменяемой системе. Я бы понял, если бы Вы привели в качестве примера более сложный usecase, который действительно показывает достоинства файловой системы-репозитария - ну, хотя бы automatic web server content update или типа того. А уж build настроить точно not a big deal.
Концепция MVFS выглядит интересно, но вызывает некоторые вопросы:
- если мы говорим о full-functional file system, то под это надо выделять отдельный partition, правильно? Это не вызывает вопросов в случае выделеной build machine, однако для end-users может быть неудобно.
- как насчет скорости работы? Ситуации, когда нужна _постоянная_ синхронизация файлов с репозиторием, которая в общем случае снижает производительность не так уж и распространены - есть возможность ее отключить? В любом случае, чтобы сделать полноценную FS под Windows, например, надо нехилое здоровье, время и деньги. Причем не факт, что получится лучше, чем "родная" NTFS - быстрее, надежнее. Про другие платформы - не знаю, думаю, что тоже не сильно просто. Вобщем - стоит ли овчинка выделки? (вопрос не риторический, мне правда интересна аргументация за/против такого решения)
User avatar
zor0n
Уже с Приветом
Posts: 630
Joined: 01 May 2001 09:01
Location: Москва -> New York

Re: Что выбрать: CVS, ClearCase, StarTeam

Post by zor0n »

ccase wrote:Вот отдельный от всего build environment - это обязательно. Вне зависимости от используемого репозитория. C ClearCase это организовать несколько легче - запихал все, что надо (библиотеки, компиляторы и т.п.) в репозиторий, и на любом боксе билдь что угодно - никаких тебе муторных апдейтов, проблем (а с каким JDK надо билдить релих XXX? да с тем что залейблен этим релизом!)
MVFS - рулез форева.


А вот интересно спросить у ветеранов ClearCase, особенно тех, кто большие системы разрабатывает: "С кем ви, мастэра культуры :nono#: ?!" Упс, это из другой оперы. А вопросы, вот они:

1. Насколько популярна практика засовывания всего, кроме base system, в ClearCase, описанная выше? Как-никак, многовато будет. Это раз. Да и компайлеры, типа "родного" cc могут не понять и не простить. То же о /lib/libc* Понятное дело, какой-нибудь ant, который самодостаточен или jdk, который чистенько ставится в любой каталог, проблемы вызвать не должны. А вот с С/С++ (если речь идет не о самопалом установленном) gcc проблемы будут.

2. Слышал какие-то неясные угрозы по поводу того, что в ClearCase, как и везде, метку ставить - очень дорого. Кто-то может прокоментировать, особенно в применении к большим (>10M LOC) системам? Какова практика: ставить метку, растить ветвь, или запоминать время и далее брать снапшот по времени?
User avatar
Gennadiy
Уже с Приветом
Posts: 11332
Joined: 30 Mar 2000 10:01
Location: Ice Storm Town

Re: Что выбрать: CVS, ClearCase, StarTeam

Post by Gennadiy »

zor0n wrote:1. Насколько популярна практика засовывания всего, кроме base system, в ClearCase, описанная выше?

По моему опыту очень популярна в случае Java. Как только требуется использование других языков начинаются компромисы.
2. Слышал какие-то неясные угрозы по поводу того, что в ClearCase, как и везде, метку ставить - очень дорого. Кто-то может прокоментировать, особенно в применении к большим (>10M LOC) системам? Какова практика: ставить метку, растить ветвь, или запоминать время и далее брать снапшот по времени?

Что значит дорого?
В общем случае растить ветвь. Иногда можно обойтись меткой. Чаще и то и другое.
ccase
Новичок
Posts: 36
Joined: 06 Sep 2003 20:29

Post by ccase »

Big Cheese wrote:Давайте определимся - вам шашечки или ехать?) (с) :) Если "ехать", то почему, собственно, "не то"?
По-моему то, что Вы описали, ничем функционально не отличается от - грубо говоря - checkout *.* by label - только отсутствием clean / checkout commands в build script.

Это просто была иллюстрация, возможно не самая удачная, отсутствия update.
В случае с - checkout *.* by label – update займет заметное время, если в репозитории лежит что-то большое – огромные библиотеки, и т.п.

Big Cheese wrote:Концепция MVFS выглядит интересно, но вызывает некоторые вопросы:
- если мы говорим о full-functional file system, то под это надо выделять отдельный partition, правильно?

Нет. Можно расматривать MVFS как сетевую файловую систему.
Big Cheese wrote:- как насчет скорости работы? Ситуации, когда нужна _постоянная_ синхронизация файлов с репозиторием, которая в общем случае снижает производительность не так уж и распространены - есть возможность ее отключить?

Синхронизации, как таковой, нет. Ресурс всегда один. По результатам анализа набора правил запрос к элементу (файл, директория) переадресуется по месту нахождения ресурса.
Т.е. если конфигурация определяет версию элемента в репозитории, то запрос переадресуется к VOB storage через сетевой протокол NFS/SMB или локально (если репозиторий расположен на том же хосте)
Если же доступ необходим к элементу не под управлением репозитория (так называемые view-private элементы – то что вы просто положили в MVFS, не добавив под source control. Checked-out версия – это разновидность view-private файлов), то он переадресуется на хост, где работает view-server к view-storage через сетевой протокол NFS/SMB или локально.

Т.е. производительность сравнима с доступом к NAS. Есть небольшой overhead вызванный оценкой правил выбора, но для работы с текстовым редактором этого более, чем достаточно. Вопрос может быть с build performance, но в этом случае можно оптимизировать нахождение storage area – прежде всего, view storage.

Если забыть про существование snapshot view, то отключить «синхронизацию» нельзя. Но можно сделать конфигурацию, которая «замораживает» набор выбираемых элементов. Вот, к примеру, распространенный набор правил (view config_spec), который стандартно используется в UCM и не только:
(1) element * CHECKEDOUT
(2) element * …/my_private_branch/LATEST
(3) element * STABLE_BASELINE –mkbranch my_private_branch

Строки пронумерованы по мере убывания приоритетеов. Строка 1 говорит, что прежде всего, я хочу видеть мои checked-out элементы.
Строка 2 – то, что в моем приватном бранче.
Строка 3 – если что-либо не найдено как checkout и не модифицированно мной, то дай мне этот элемент по метке STABLE_BASELINE, а если я захочу сделать check-out, то создай checked-out версию элемента в my_private_branch. В этом случае, пока элемент checked-out, он выбирается по правилу (1), после check-in – по правилу (2).

С одной стороны все стабильно, с другой – переход с следующей BASELINE – это всего изменение строки (3) в config_spec.

Стоит заметить, что view – это тоже сетевой ресурс. Одно и тоже view может быть использовано одновременно многими членами команды (если они имеют соответствующие права доступа). Степень изоляции Вы определяете сами.

Big Cheese wrote:В любом случае, чтобы сделать полноценную FS под Windows, например, надо нехилое здоровье, время и деньги. Причем не факт, что получится лучше, чем "родная" NTFS - быстрее, надежнее.

Тем не менне, файловая система, реализующая контроль доступа в стиле UNIX и такие приятные вещи, как soft-links имплементирована под Windows.
Big Cheese wrote:Про другие платформы - не знаю, думаю, что тоже не сильно просто. Вобщем - стоит ли овчинка выделки? (вопрос не риторический, мне правда интересна аргументация за/против такого решения)


С этим надо поработать, чтобы оценить по достоинству.
Но как только это реализовано – достоинств проявляется много. В том числе и не столь очевидных.
Например, во время build, Вы знаете, к каким элементам обращался компилятор для сборки, к примеру, f.o (если все запросы все-равно перехватываются MVFS, почему бы эту информацию не записать куда-либо) – в нашем случае, это были:
f.c, f.h, stdio.h, etc – таким образом у нас работает неявный анализ зависимостей. Если выбиралась версия из репозитория – то мы знаем, какая именно, если нет – знаем timestamp. Если к этой информации добавить ключи компиляции и т.п., то мы получим полную конфигурационную спецификацию элемента f.o (именно так работает clearmake, omake, clearaudit).
Теперь, если кто-то поменяет f.h, к примеру, мы знаем, что f.o надо пересобрать, даже если эта зависимость не описана в makefile. Мы имеем безопасный билд (в особенности, если все элементы в репозитории и мы можем оперировать версиями, а не timestamp)
С другой стороны, если кто-то будет собирать f.o с той же конфигурацией – почему бы ему не предоставить уже собранный, готовый f.o, чтобы сохранить время? (концепция derived objects, DO в ClearCase).

Удачи!
Big Cheese
Уже с Приветом
Posts: 1211
Joined: 02 Jul 2000 09:01
Location: SFBA

Post by Big Cheese »

ccase wrote:
Big Cheese wrote:Давайте определимся - вам шашечки или ехать?) (с) :) Если "ехать", то почему, собственно, "не то"?
По-моему то, что Вы описали, ничем функционально не отличается от - грубо говоря - checkout *.* by label - только отсутствием clean / checkout commands в build script.

Это просто была иллюстрация, возможно не самая удачная, отсутствия update.
В случае с - checkout *.* by label – update займет заметное время, если в репозитории лежит что-то большое – огромные библиотеки, и т.п.
А лазание на сервер (или еще куда по сети) за содержимым открываемых файлов / структурой каталогов - времени вроде как и не занимает? :) "Отсутствие update" я в данном случае вижу только в отсутствии явных update commands.
ccase wrote:
Big Cheese wrote:Концепция MVFS выглядит интересно, но вызывает некоторые вопросы:
- если мы говорим о full-functional file system, то под это надо выделять отдельный partition, правильно?

Нет. Можно расматривать MVFS как сетевую файловую систему.
Big Cheese wrote:- как насчет скорости работы? Ситуации, когда нужна _постоянная_ синхронизация файлов с репозиторием, которая в общем случае снижает производительность не так уж и распространены - есть возможность ее отключить?

Синхронизации, как таковой, нет. Ресурс всегда один. По результатам анализа набора правил запрос к элементу (файл, директория) переадресуется по месту нахождения ресурса.
Т.е. MVFS не держит никакого кэша (в RAM) и каждый раз при открытии файла тянет его с VOB storage / view-storage? 8O
ccase wrote:Т.е. если конфигурация определяет версию элемента в репозитории, то запрос переадресуется к VOB storage через сетевой протокол NFS/SMB или локально (если репозиторий расположен на том же хосте)

Т.е. производительность сравнима с доступом к NAS. Есть небольшой overhead вызванный оценкой правил выбора, но для работы с текстовым редактором этого более, чем достаточно. Вопрос может быть с build performance, но в этом случае можно оптимизировать нахождение storage area – прежде всего, view storage.
Даже если storage расположен локально, все равно такая модель вносит overhead на дополнительный data transfer :(

ccase wrote:Если забыть про существование snapshot view, то отключить «синхронизацию» нельзя. Но можно сделать конфигурацию, которая «замораживает» набор выбираемых элементов. Вот, к примеру, распространенный набор правил (view config_spec), который стандартно используется в UCM и не только:
(1) element * CHECKEDOUT
(2) element * …/my_private_branch/LATEST
(3) element * STABLE_BASELINE –mkbranch my_private_branch

Строки пронумерованы по мере убывания приоритетеов. Строка 1 говорит, что прежде всего, я хочу видеть мои checked-out элементы.
Строка 2 – то, что в моем приватном бранче.
Строка 3 – если что-либо не найдено как checkout и не модифицированно мной, то дай мне этот элемент по метке STABLE_BASELINE, а если я захочу сделать check-out, то создай checked-out версию элемента в my_private_branch. В этом случае, пока элемент checked-out, он выбирается по правилу (1), после check-in – по правилу (2).

С одной стороны все стабильно, с другой – переход с следующей BASELINE – это всего изменение строки (3) в config_spec.
Спасибо, звучит интересно. А как быть с shared checkout? или CC это не поддерживает? "переход с следующей BASELINE" - имеется в виду переключение конфигурации на другую метку (label) / timestamp/ branch и т.п.? Если да - я бы сказал что необходимость для этого править конфиги - это явный перебор, если речь не идет о build machine. (я например часто переключаюсь между braches/labels - что теперь - постоянно править что-то?)

ccase wrote:
Big Cheese wrote:В любом случае, чтобы сделать полноценную FS под Windows, например, надо нехилое здоровье, время и деньги. Причем не факт, что получится лучше, чем "родная" NTFS - быстрее, надежнее.

Тем не менне, файловая система, реализующая контроль доступа в стиле UNIX и такие приятные вещи, как soft-links имплементирована под Windows.
Big Cheese wrote:Про другие платформы - не знаю, думаю, что тоже не сильно просто. Вобщем - стоит ли овчинка выделки? (вопрос не риторический, мне правда интересна аргументация за/против такого решения)


Но как только это реализовано – достоинств проявляется много. В том числе и не столь очевидных.
Например, во время build, Вы знаете, к каким элементам обращался компилятор для сборки, к примеру, f.o (если все запросы все-равно перехватываются MVFS, почему бы эту информацию не записать куда-либо) – в нашем случае, это были:
f.c, f.h, stdio.h, etc – таким образом у нас работает неявный анализ зависимостей.
Погодите, а если, например stdio.h находится на локальном диске? или это невозможно и надо ВСЕ засовывать под MVFS? Кстати, MSVC, например, при билде открывает один и тот же файл довольно много раз - видимо для проверки outdated dependencies. Могу сказать (из опыта участия в проекте, based on custom file system driver :gen1: ), что если на каждый open file request делать даже небольшие телодвижения - получается _очень_ большое замедление работы.
ccase wrote: Если выбиралась версия из репозитория – то мы знаем, какая именно, если нет – знаем timestamp. Если к этой информации добавить ключи компиляции и т.п., то мы получим полную конфигурационную спецификацию элемента f.o (именно так работает clearmake, omake, clearaudit).
Теперь, если кто-то поменяет f.h, к примеру, мы знаем, что f.o надо пересобрать, даже если эта зависимость не описана в makefile. Мы имеем безопасный билд (в особенности, если все элементы в репозитории и мы можем оперировать версиями, а не timestamp)
С другой стороны, если кто-то будет собирать f.o с той же конфигурацией – почему бы ему не предоставить уже собранный, готовый f.o, чтобы сохранить время? (концепция derived objects, DO в ClearCase).
Вообще IMHO понятие "безопасного" билда - надуманое. Т.е. проблема кривизны cumulative builds из-за криво прописаного makefile (в случае cleanup / full rebuild такой проблемы нет вообще) по-моему, не стоит сколь-нибудь остро. Идея реюзать объектные файлы тоже выглядит интересно, но по значимости стоит где-то рядом с семантиковскими фичами типа distributed compilation of C++ projects 5-7летней давности (сугубое IMHO)

Вобщем, мне кажется, что MVFS штука с технической точки зрения очень интересная, но для работы, например в Visual Studio я бы ее не выбрал - для меня скорость файловой системы важнее.
Еще раз спасибо за Ваши коментарии, мне было интересно.
User avatar
Gennadiy
Уже с Приветом
Posts: 11332
Joined: 30 Mar 2000 10:01
Location: Ice Storm Town

Post by Gennadiy »

Big Cheese wrote:Если да - я бы сказал что необходимость для этого править конфиги - это явный перебор, если речь не идет о build machine. (я например часто переключаюсь между braches/labels - что теперь - постоянно править что-то?)

Можно создать несколько views с разными конфигами и переключатся между ними по мере необходимости.
Вобщем, мне кажется, что MVFS штука с технической точки зрения очень интересная, но для работы, например в Visual Studio я бы ее не выбрал - для меня скорость файловой системы важнее.

Если скорость настолько существенна, то существуют snapshots. В этом случае вы работаете только с локальным диском. Синхронизация происходит в момент check-in/check-out.
Big Cheese
Уже с Приветом
Posts: 1211
Joined: 02 Jul 2000 09:01
Location: SFBA

Post by Big Cheese »

Gennadiy, спасибо Вам за ответ. Если позволите, пару вопросов (ниже по тексту):
Gennadiy wrote:
Big Cheese wrote:Если да - я бы сказал что необходимость для этого править конфиги - это явный перебор, если речь не идет о build machine. (я например часто переключаюсь между braches/labels - что теперь - постоянно править что-то?)

Можно создать несколько views с разными конфигами и переключатся между ними по мере необходимости.
Views - это объекты на сервере, я правильно понимаю? Насколько сложно между ними переключаться?
Вобщем, мне кажется, что MVFS штука с технической точки зрения очень интересная, но для работы, например в Visual Studio я бы ее не выбрал - для меня скорость файловой системы важнее.
Gennadiy wrote:Если скорость настолько существенна, то существуют snapshots. В этом случае вы работаете только с локальным диском. Синхронизация происходит в момент check-in/check-out.
Это в корне меняет дело! А какие еще ограничения накладывает snapshot? Как я понял (может, ошибаюсь), народ в основном snapshots не использует - хотя этот режим вроде как имеет очевидное преимущество в скорости доступа к данным, при одном недостатке - отсутствии real-time синхронизации с репозиторием - что на мой взгляд вполне терпимо. So where is the catch?

Насчет существенности скорости - я бы, например, не смог работать с теми проектами, с которыми сейчас имею дело, если бы они были развернутыми на медленном storage media (типа network drive) - все-таки приходится пару раз в день строить, плюс отладка, а таскать все исходники-объектники-бинарники по сетке (~5-6 тысяч source files, total build output где-то в районе 1.5 GB - вобщем, немало на мой взгляд) - удовольствие явно ниже среднего :cry: Я как-то раз попробовал построить build на сетевом диске - больше не хочется. Мне удобнее 2 раза в день потратить 10 минут на checkout/update "вручную", чем постоянно ждать, пока Visual Studio updating dependencies.....
User avatar
Gennadiy
Уже с Приветом
Posts: 11332
Joined: 30 Mar 2000 10:01
Location: Ice Storm Town

Post by Gennadiy »

Big Cheese wrote:Views - это объекты на сервере, я правильно понимаю? Насколько сложно между ними переключаться?

В случае dynamic views вы их видете как разные логические диски. Например один view диск W: другой Y: В случае snapshot views это разные директории на вашем диске.
Это в корне меняет дело! А какие еще ограничения накладывает snapshot? Как я понял (может, ошибаюсь), народ в основном snapshots не использует - хотя этот режим вроде как имеет очевидное преимущество в скорости доступа к данным, при одном недостатке - отсутствии real-time синхронизации с репозиторием - что на мой взгляд вполне терпимо. So where is the catch?

Да ни в чем. Мы активно используем. Я заметил тенденцию. Java-people исползуют в основном dynamic, а С++/С#/VB часто используют snapshots.
Недостаток - что если кто-то изменил файл, то вы об этом не узнаете, пока не попытаетесь его check-out или не сделаете update.
Насчет существенности скорости - я бы, например, не смог работать с теми проектами, с которыми сейчас имею дело, если бы они были развернутыми на медленном storage media (типа network drive) - все-таки приходится пару раз в день строить, плюс отладка, а таскать все исходники-объектники-бинарники по сетке (~5-6 тысяч source files, total build output где-то в районе 1.5 GB - вобщем, немало на мой взгляд) - удовольствие явно ниже среднего :cry: Я как-то раз попробовал построить build на сетевом диске - больше не хочется. Мне удобнее 2 раза в день потратить 10 минут на checkout/update "вручную", чем постоянно ждать, пока Visual Studio updating dependencies.....

В таком случае snapshots это то что доктор прописал. Скорость такая же, как если бы никакого ClearCase не было.
ccase
Новичок
Posts: 36
Joined: 06 Sep 2003 20:29

Post by ccase »

Big Cheese wrote:А лазание на сервер (или еще куда по сети) за содержимым открываемых файлов / структурой каталогов - времени вроде как и не занимает? :) "Отсутствие update" я в данном случае вижу только в отсутствии явных update commands.

Даже если storage расположен локально, все равно такая модель вносит overhead на дополнительный data transfer :(

overhead присутствует, но не на data transfer, а на системные вызовы типа stat & open, так как при их выполнении ClearCase должен определить, к какой версии элемента этот запрос должен быть адресован и где она расположена «географически». После этого, скорость чтения/записи точно такая же, как у локальной NTFS/ufs/etc или удаленной SMB/NFS.
Разумеется, существует кэширование, в том числе и аттрибутов. Но это организовать существенно проще чем репликацию. Последняя тоже присутсвует в CC, в виде MultiSite. Но это, в основном, для географически распределенного development – какая бы толстая «кишка» не лежала между континентами, а round-trip time, все равно более 300-500 ms.

Явный update частенько проигрывает по простой причине. Допустим у вас есть директория “include” с кучей .h файлов. Во время работы/билда Вы обращаетесь только с f.h.
update-ить Вам прийдется все измененные файлы в директории, в то время как с MVFS будет зартрачено время на передачу (если таковая необходима) только f.h. После этого ее можно положить в cash и только проверять, не изменились ли аттрибуты – выбираемая версия/timestamp.

Big Cheese wrote:Спасибо, звучит интересно. А как быть с shared checkout? или CC это не поддерживает?

Что именно Вы имеете ввиду под shared checkout? Там есть концепция reserved/unreserved checkout. Reserved checkout создает placeholder под будущую версию в version tree, потому возможен только 1 reserved checkout/per-element-branch. Unreserved checkouts может быть сколько угодно, но Вам грозит merge, при check-in (что собственно, не проблема).
При наличии прав, более чем один девелопер может работать одновременно с обоими типами checkouts, т.к., как я уже упоминал, checked-out version «принадлежит» view, а view – сетевой ресурс. Если права на модификацию view/element имеет группа devapp1, то все члены этой группы могут стартовать это view одновременно и модифицировать все, что модифицируется. :)

Big Cheese wrote:"переход с следующей BASELINE" - имеется в виду переключение конфигурации на другую метку (label) / timestamp/ branch и т.п.? Если да - я бы сказал что необходимость для этого править конфиги - это явный перебор, если речь не идет о build machine. (я например часто переключаюсь между braches/labels - что теперь - постоянно править что-то?)

Геннадий уже ответил. Можно только добавить, что в случае dynamic (MVFS) view, даже большой проект не занимает существенного места на локальном диске (даже в случае с локальным view-storage).
Девелоперы, пришедшие с других систем в ClearCase, сначала усиленно модифицируют cofig_spec (матерясь при этом).
Потом приходят к устоявшейся практике – 1 view под конкретную потребность, т.е. разработка Rel_1.0, Rel_1.5, Rel_2.0, Rel_0.1_bugfix, Rel1.5_f_client_customization, etc. Они могут быть использованы в любое время, без предварительных updates, и т.п.
Любое view доступно (после старта – секундная операция. ClearCase стартует view_server процесс на хосте, где расположен view-storage /в случае с NAS это не совсем так)
в Windows – через диск M (это умолчание, которое можно изменить), как M:\view-name\path_in_repository
Так же можно «замапить» view на какой-либо диск Z, X, … и обаращаться к коду как Z:\path_in_repository, при этом view стартуется автоматически при логине. Я этого не делаю – букв жалко :)
В UNIX - через /view директорию (это тоже умолчание, которое можно изменить) в виде /view/view-name/path_in_repository.
В UNIX можно также, кроме startview делать setview – в этом случае делается изменение root directory и как репозиторий, так и локальные файлы доступны через ‘/path’, без упоминания имени view.

Много ресурсов view_server не отнимает - мы, обычно, удаляем принудительно только views, которые не использовались более 6-12 месяцев, если есть недостаток ресурсов.

Big Cheese wrote:проблема кривизны cumulative builds из-за криво прописаного makefile (в случае cleanup / full rebuild такой проблемы нет вообще) по-моему, не стоит сколь-нибудь остро. Идея реюзать объектные файлы тоже выглядит интересно, но по значимости стоит где-то рядом с семантиковскими фичами типа distributed compilation of C++ projects 5-7летней давности (сугубое IMHO)


Я бы послушал, что бы Вам сказали, например, в Cisco по поводу cleanup / full rebuild какой-нибудь версии IOS :)
На счет distributed builds – мне нравилось, но это было в UNIX. В виндах, возможно, это криво – там много что криво.

Удачи!
ccase
Новичок
Posts: 36
Joined: 06 Sep 2003 20:29

Post by ccase »

Big Cheese wrote:Это в корне меняет дело! А какие еще ограничения накладывает snapshot?


1. В dynamic view, вы всегда можете задать правило выбора элемента напрямую ("отключить" пресловутый cofig_spec для выбора данного элемента).
все, что идет в пути после символов @@ (это настраиваемо) будет рассматриваться как путь в дереве версий, например:
some_path/f.c@@/main/1 - выберет версию 1 из бранча main
some_path/f.c@@/LABEL - выберет версию с LABEL
вне зависимости от установленных правил

Используются, как snapshot, так и dynamic view - в зависимости от конкретных требований. ClearCase, по моему, тем и хорош, что не склоняет к какой-либо модели использования - выбор всегда Ваш.

Я например, для своих целей, предпочитаю dynamic, но когда собираюсь "взять работу на дом", особенно туда, где нет никакой сети - создаю или обновляю snapshot view и работаю с ним автономно.

Удачи!
Big Cheese
Уже с Приветом
Posts: 1211
Joined: 02 Jul 2000 09:01
Location: SFBA

Post by Big Cheese »

ccase wrote:overhead присутствует, но не на data transfer, а на системные вызовы типа stat & open, так как при их выполнении ClearCase должен определить, к какой версии элемента этот запрос должен быть адресован и где она расположена «географически». После этого, скорость чтения/записи точно такая же, как у локальной NTFS/ufs/etc или удаленной SMB/NFS.
Т.е., если элемент расположен в локальном репозитории, MVFS читает/пишет напрямую в репозиторий (т.е в файл(ы) на локальном диске), минуя VOB? Если да, то интересно, как обеспечивается concurrency control? Если нет (данные передаются через серверную часть) - то overhead на data transfer должен присутствовать.
ccase wrote:Разумеется, существует кэширование, в том числе и аттрибутов.
Тогда должен существовать и overhead, вносимый при проверке "когерентности" кэша. Поимите меня правильно - я не пытаюсь доказать (ни Вам, ни кому-либо) что CC - sux & must die, тем более, что я так не считаю. Мой поинт в том, что чудес, к сожалению, не бывает - у любого решения есть достоинства и недостатки. Вы, как мне кажется, утверждаете обратное.
Явный update частенько проигрывает по простой причине. Допустим у вас есть директория “include” с кучей .h файлов. Во время работы/билда Вы обращаетесь только с f.h.
update-ить Вам прийдется все измененные файлы в директории, в то время как с MVFS будет зартрачено время на передачу (если таковая необходима) только f.h. После этого ее можно положить в cash и только проверять, не изменились ли аттрибуты – выбираемая версия/timestamp.
Тут тоже не все так очевидно. Во первых, возникает вопрос о целесообразности подобной организации данных - в чем смысл держать директорию-помойку с кучей файлов, большинство из которых не используется? Помнится, Windows только ленивый не пинал за склонность все пихать в директорию windows/system32. Во вторых, update-ить все файлы не придется - только out-of-date. В третьих, при интенсивном обращении к файлам (открыть/прочитать/закрыть/снова открыть) и к директориям (get directory content) - проверка cache на когерентность при каждом обращении вносит unacceptable overhead (если прилетает пара сотен open file request-ов в секунду). Приходится ставить проверки и лезть на сервер не чаще, чем раз в N секунд и т.п. Можно, конечно, реализовать server-side notifications, тогда, правда, повышается нагрузка на сервер. Это из опыта работы над похожим проектом. Опять, я не утверждаю, что такое решение не жизнеспособно, просто выдумывать некую гипотетическую ситуацию, которая "легким движением руки" превращает недостатки в достоинства - это из области sales & marketing. Меня интересует техническая сторона.

Я бы послушал, что бы Вам сказали, например, в Cisco по поводу cleanup / full rebuild какой-нибудь версии IOS
На счет distributed builds – мне нравилось, но это было в UNIX. В виндах, возможно, это криво – там много что криво.

А что бы они сказали? Вы будете смеяться, но во многих компаниях принята практика (или policy) cleanup -> checkout *.* by label -> build all. В любом случае, при грамотном построении проектов/makefiles проблемы не существует. Насчет distributed build - я не утверждал, что это криво, это просто не актуально при нынешних гигагерцах и гигабайтах. Во всяком случае, на Intel архитектуре. На Solaris при использовании тормозного Sun Workshop Pro (или как он там) C++ complier - да, могло бы быть полезно, только там (насколько я знаю) такой возможности нет. Попытку мимоходом пнуть винды комментировать не буду 8)
ccase
Новичок
Posts: 36
Joined: 06 Sep 2003 20:29

Post by ccase »

Big Cheese wrote:Т.е., если элемент расположен в локальном репозитории, MVFS читает/пишет напрямую в репозиторий (т.е в файл(ы) на локальном диске), минуя VOB?
Если да, то интересно, как обеспечивается concurrency control? Если нет (данные передаются через серверную часть) - то overhead на data transfer должен присутствовать.

Репозиторий - всегда удаленный (ну почти).
Простой пример (забудем про clearmake) с локальным view:
Вы компилируете f.c (размер - 1K) и получаете f.o (16K) - не элемент репозитория, затем линкуете f.o сотоварищи и получаете f.exe (200K) - тоже не элемент репозитория в случае девелопера.
f.c - версия из репозиторя (расположение удаленное)
f.o - принадлежит Вашему view (расположение локальное)
f.exe - принадлежит Вашему view (расположение локальное)

обмен данных по сети с репозиторием - 1К (я утрирую)
обмен данных, который был перенаправлен MVFS на локальный диск - 216K

Big Cheese wrote:На Solaris при использовании тормозного Sun Workshop Pro (или как он там) C++ complier - да, могло бы быть полезно, только там (насколько я знаю) такой возможности нет.


Как это? dmake был частью Workshop...

Удачи!
niki2k1
Новичок
Posts: 20
Joined: 01 Aug 2003 06:50
Location: SPb, Russia

Re: Что выбрать: CVS, ClearCase, StarTeam

Post by niki2k1 »

IA72 wrote:SourceGear Vault - копия VSS на MS SQL и вебсервисах - мы сейчас это как раз рассматриваем.

Часто встречал рекламу этого Vault'a, можно ли где-нибудь найти его trial, demo и т.п. чтобы посмотреть?

Return to “Вопросы и новости IT”