Распределенные системы разработки

Меня интересует система, позволяющая осуществлять распределенную разработку с частью аутентификации. Что я имею в виду?

Итак, давайте возьмем SVN, SVN отслеживает ревизии и не заботится о том, кто их отправляет, пока у вас есть право на отправку, вы можете отправлять, на самом деле, любую часть в репозитории. Где моя система вступает в игру? Возможность гранулировать контроль доступа и придать окружающей среде ощущение stackoverflow.

В системе, которую я описываю, у нас есть 4 пользователя: Боб, Алиса, Дэн, Джо. Боб — управляющий проект, Алиса и Дэн — программисты под руководством Боба, а Джо — случайный программист в Интернете, который хочет помочь. В идеале в этой системе Боб может фиксировать любые изменения и не требует одобрения. Алиса и Дэн могут зафиксировать свои ветки или ветку, но для фиксации в магистрали потребуется одобрение Боба.
Тут в дело вступает Джо, который хочет помочь, однако вы просто не хотите ему давать ключи от королевства, так сказать, пока, поэтому в моей системе вы должны настроить учетную запись «низкого пользователя». Любые коммиты, которые делает Джо, должны быть одобрены Дэном, Алисой или обоими. Однако в системе Джо может создать «карму», где после стольких одобренных коммитов потребуется только одобрение одного из программистов, и тогда, в конечном итоге, одобрение не потребуется.

Имеет ли это смысл, и знаете ли вы, существует ли такая система? Или я просто сумасшедший, чтобы даже подумать, что такая система/среда возможны?


person Natalie Adams    schedule 31.05.2010    source источник


Ответы (4)


Всегда нужно задавать вопрос: почему ваше решение лучше существующих решений?

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

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

person samoz    schedule 31.05.2010
comment
Хотя это и не прямой ответ, вы подали мне отличную идею. - person Natalie Adams; 02.06.2010
comment
Рад помочь! Если вы запускаете свой проект с нуля, разместите ссылку на сайт проекта! - person samoz; 02.06.2010

Это может сделать любая приличная распределенная система контроля версий, например Git или Mercurial. Те, у кого есть разрешение на push, могут нажимать, другие должны отправлять запросы на извлечение. Единственная отсутствующая функция — это автоматическое накопление того, что вы называете «кармой».

Именно так работает большинство проектов с открытым исходным кодом.

person David M    schedule 31.05.2010

Хм... Интересные пожелания...

Посмотрим. Вы можете сделать 3 ветки:

  • Финал
  • Разработка
  • Небезопасно

Боб может зафиксировать в Final. Алиса и Дэн могут зафиксировать Development, а Джо может зафиксировать Unsafe.

Утверждение фактически представляет собой слияние изменений из более низкой ветки в более высокую. Например: Джо получает одобрение, когда его код объединяется Алисой или Дэном в ветке Development. Точно так же одобрение для Алисы и Дэна — это слияние их кода Бобом в ветке Final.

С Кармой немного сложнее. Вы можете написать скрипт, который время от времени будет проверять количество слияний (одобрений) для одного пользователя. При превышении определенного порога пользователь получает повышение (скрипт дает ему доступ к более высоким веткам).

person Victor Hurdugaci    schedule 31.05.2010

Вы можете установить разрешения на основе каталога для подрывной деятельности, что устраняет подавляющее большинство проблем, о которых вы говорите с Алисой и Дэном.

В большинстве проектов в случае с Дэном разрешается отправлять исправления, которые затем включаются в фиксацию супервизором.

person AvatarKava    schedule 31.05.2010