LINUX.ORG.RU
ФорумTalks

О системах контроля версий

 , , ,


0

2

Здравствуй, коллективный разум ЛОРа. Вопрос может внезапно оказаться флеймообразующим, потому лучше сразу в Talks. Итак, хочу понять для себя системы контроля версий - но совершенно не знаю какая из них подойдет под мои (скромные?) нужды. А надо мне всего-то - несколько веток репозитория, разграничение прав доступа к ним. К примеру в одну может вносить изменения только админ, в другую ветку - могут все, но все могут клонировать к себе первую, кроме нескольких отдельно взятых файлов, к которым опять же доступ только у админа. Что на эту тему почитать есть, товарищи? Если по-русски еще, то вообще ништяк! И да, я ни разу в жизни не использовал ни одну из них. И даже не совсем понимаю, они ли нужны для того что я выше описал? Обьясните как вы умеете =)

★★★★★

центролизированный репо? Или у каждого своя копия?

xorik ★★★★★ ()
Последнее исправление: xorik (всего исправлений: 1)
Ответ на: комментарий от xorik

хочется вот как: есть ветка root, суб-репозиторий, ну или репозиторий хз как оно зовется, юзеры определенной группы должны иметь к нему доступ на чтение - они синкают эту ветку себе и кодят, но свои изменения они шлют в другую ветку, назовем ее devel. админ смотрит коммиты в devel, и лишь один может переместить их в root. кодеры кодят и коммитят, админ читает и обновляет главную ветку. да, и если это важно то код будет.. на пыхпыхе.

Komintern ★★★★★ ()
Последнее исправление: Komintern (всего исправлений: 1)
Ответ на: комментарий от Komintern

git для упоротых, mercurial для всех остальных нормальных людей.

Rastafarra ★★★ ()
Ответ на: комментарий от Rastafarra

=) ага. значит меркуриал. если не влом, прочти небольшое полотенце выше. меркуриал это сможет?

Komintern ★★★★★ ()

Под именно описанную задачу не подойдет ни одна VCS из-за:

все могут клонировать к себе первую, кроме нескольких отдельно взятых файлов, к которым опять же доступ только у админа

DVCS так не умеют. Наверное, можно заставить SVN работать так.

И даже не совсем понимаю, они ли нужны для того что я выше описал?

За исключением разграничения доступа, они и предназначены для таких задач.

Ах да, и рассматривать CVS для нового проекта в 21-м веке просто бессмысленно.

tailgunner ★★★★★ ()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от Komintern

Я поднимал mercurial недавно, довольно просто. Инструкции легко гуглятся. У него в комплекте есть веб сервер, подняв который можно смотреть репозитории через веб-морду. Для http авторизации я поставил перед ним nginx. Для твоего случая я бы разрешил всем клонировать и пушить код. А у себя бы в клоне репозитория держал бы отдельный бранч, в который сливал бы нужные изменения из других. Если начнешь разбираться в mercurial крайне советую цикл статей http://habrahabr.ru/post/108443/ - просто и понятно.

ALeo ()
Ответ на: комментарий от tailgunner

все могут клонировать...

хорошо, а без этого условия? допустим они могут клонировать к себе всю ветку root, но доступ на запись иметь только в ветку devel? с логированием каждого коммита в devel и возможностью дальнейшего просмотра админом и внесения изменений в ветку root..

Komintern ★★★★★ ()
Ответ на: комментарий от ALeo

маны на хабре выглядят годно, ща посмотрим как куриться будут =)

Komintern ★★★★★ ()

тебе нужен Gitorious, там делаешь основной репозиторий проекта, в который может коммитить только админ, пользователи себе создают репозитории-клоны средствами гиториуса и работают с ними, потом админ может сам забрать изменения из нужнеого клона, либо пользователь может создать merge-request

HighwayStar ★★★★★ ()

Subversion вполне подходит под твои запросы. Его и порекомендую, т.к. прост для понимания и использования. Распределенная система тебе, похоже, не нужна.

Relan ★★★★★ ()

К примеру в одну может вносить изменения только админ, в другую ветку - могут все, но все могут клонировать к себе первую, кроме нескольких отдельно взятых файлов, к которым опять же доступ только у админа.

Тогда только svn.

Reset ★★★★★ ()
Ответ на: комментарий от HighwayStar

как быстро меняются мнения..
от начального

Под именно описанную задачу не подойдет ни одна VCS

до

тебе нужен Gitorious

Subversion вполне подходит под твои запросы

сейчас про меркуриал почитаю, т.к уже имеется понятный мануал. а дальше как пойдет.

Komintern ★★★★★ ()
Ответ на: комментарий от Komintern

а без этого условия? допустим они могут клонировать к себе всю ветку root, но доступ на запись иметь только в ветку devel?

Что для тебя «право на запись»? Любой сможе сделать коммит, но ты можешь не принимать этот коммит в центральный репозиторий (хуком на push).

tailgunner ★★★★★ ()
Ответ на: комментарий от Komintern

mercurial для упоротых. Нормальные люди используют CVS.

// Как вам аргументация?

P.S. Советую Вам git + Gitosis: умеет доступ и распределение прав по ключам. На хабре есть ман с картинками.

KennyMinigun ★★★★★ ()
Последнее исправление: KennyMinigun (всего исправлений: 1)

К примеру в одну может вносить изменения только админ, в другую ветку - могут все но все могут клонировать к себе первую

mercurial

кроме нескольких отдельно взятых файлов, к которым опять же доступ только у админа

А вот это вряд ли, только отдельным бранчем :-)

no-dashi ★★★★★ ()

Даже не знаю, что и сказать. Конечно, используй проверенные временем надежные решения типа CVS. Зачем тебе удобство и новомодные фичи гита.

vsn ()

разграничение прав доступа к ним

не зндача vcs.

invy ★★★★★ ()

Возможно моё мнение пойдёт вразрез с окружающими, но лично мне кажется наиболее удобным Gitorious. И вместо разделения на ветки - личные клоны с pull-request-ами.

backbone ★★★★★ ()

Не ведитесь на ТСа

Ему просто нужно несколько разных репозиториев с разными правами доступа к каждому из низ

stevejobs ★★★★☆ ()
Ответ на: комментарий от stevejobs

примерно так. собственно софтина будет там одна и та же, но все коммиты в основную ветку надо контролировать.
тут насчет mercurial вопрос - нормально с ним работать можно только из консоли с помощью hg? есть ли возможность каким-то образом подтверждать коммиты админу через веб?

Komintern ★★★★★ ()
Ответ на: комментарий от Komintern

Есть несколько веб-систем: Rhodecode, Reviewboard.

есть ли возможность каким-то образом подтверждать коммиты админу через веб?

Аппрувить пулл-реквесты, pardon my french.

tailgunner ★★★★★ ()
Ответ на: комментарий от Komintern

с git и hg лучше работать через консоль, с svn - через гуй. Олсо, под мак есть гитхаб-для-мака и sourcetree.

насчет нескольких репозиториев - если у тебя гитхаб, за каждую новую репу придется платить денюжку, а они там недешевые совсем

держихвостпистолетом ответил про админку

но я это все не использовал, чистое теоретизирование с кухни

помойму если программист задастся целью украсть код, он его украдет

stevejobs ★★★★☆ ()
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от stevejobs

прикол не в краже кода. прикол в том, чтобы без согласия админа в определенную ветку не попал ни один коммит. в идеале админ может просматривать через веб отдельные коммиты в другую, devel-ветку, и нажимать кнопку «подтвердить», которая применит это же изменение к рестриктед-ветке. кто подскажет магический запрос в гугл, который меня на эту тему просветит?

Komintern ★★★★★ ()
Последнее исправление: Komintern (всего исправлений: 1)
Ответ на: комментарий от Komintern

епта, говорю же, вместо «админской ветки» используешь отдельный «админский репозиторий». Репозитории вместо веток. На уровне репозитория права разграничивать можно.

stevejobs ★★★★☆ ()

короче, SVN умеет разграничивать права на запись/чтение для отдельных юзеров и веток

Harald ★★★★★ ()
Ответ на: комментарий от stevejobs

а какая разница между репозиторием и веткой? в терминах меркуриала..

Komintern ★★★★★ ()
Ответ на: комментарий от Komintern

прикол в том, чтобы без согласия админа в определенную ветку не попал ни один коммит.

Если программист начинает безумно сверкая глазами из окна офиса выбрасывать компутеры с мониторами, то решение этой проблемы не в том что-бы заварить окна и приковать компутеры к полу, ага.

kernel ★★☆ ()
Ответ на: комментарий от kernel

нет. тут другая ситуация. есть человек который очень долгое время девелопил проект, не используя при этом всяких этих гитов с меркуриями. да, он писал в блокноте на пыхпыхе (фейспалм). теперь кодить ему надоело и он хочет только смотреть как кодят другие и апрувить изменения в основной код. естественно чтобы сами нубы не могли что-либо закоммитить в основной код без его ведома. ну а мне выпало настроить для этого workaround.

Komintern ★★★★★ ()
Последнее исправление: Komintern (всего исправлений: 3)
Ответ на: комментарий от n_play

http://git-scm.com/figures/18333fig0502-tn.png
это хочу!!
blessed - основной код, developer private может его клонировать себе, но напрямую пушить не может в blessed. Потому он пушит в developer public, а integration manager (в данном случае админ) может вносить эти изменения в blessed. Вот точно это и надо!

Komintern ★★★★★ ()
Ответ на: комментарий от Komintern

на github-e такое процветает. Другие разработчики будут слать тебе pull-request в твой репозиторий из своих публичных.

думаю в других местах есть аналогичные возможности.

n_play ()
Ответ на: комментарий от Komintern

ну а мне выпало настроить для этого workaround.

Самый простой способ это этому твоему товарищу просто следить за своими бранчами/ветками, плюс например в коммиты которые в stable бранч комменты какие нибудь добавлять.
Если нет злонамереных девелоперов, а есть только случайности - то все коммиты в стабильную ветку без тага будут видны. На это можно просто примитивный скрипт настроить.
Если же у вас там будут подделывать комменты начотдела и username который тоже в коммит пишется, что бы сорвать разработку, у вас голова должна уже болеть не об правах доступа к репозиторию ;D

kernel ★★☆ ()
Ответ на: комментарий от Komintern

это хочу!!

Это умеет любая DVCS (да и Subversion, по сути, тоже).

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

если не сложно, можешь описать как это будет выглядеть в терминологии mercurial? я решительно запутался в сотнях манов, и явно сказывается отсутствие опыта работы с подобными системами вообще. мне бы буквально, вроде - учетка админа создается в.. LDAP/passwd/MYSQL/htpasswd, он имеет все права на центральный репозиторий, нужно настроить <софтнейм> чтобы админ мог смотреть коммиты в devel-ветку через веб и подтверждать их в stable-ветку. да. я со страшной силой торможу. за это извините =(

Komintern ★★★★★ ()
Последнее исправление: Komintern (всего исправлений: 2)
Ответ на: комментарий от Komintern

В простых словах - не могу. Попробуй поставить какой-нибудь Rhodecode и покопаться в нем (там юзеры создаются прямо из веб-ифейса, права на репозитории - вроде тоже).

tailgunner ★★★★★ ()

cvs, git, mercurial, svn

из все перечисленных, два не r.i.p и только один удобный (последний - не сабвершн)

AGUtilities ★★★ ()
Ответ на: комментарий от Komintern

А еще есть Phabricator и InDefero, но это другая весовая категория.

tailgunner ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.