Распределенные системы разработки - PullRequest
3 голосов
/ 01 июня 2010

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

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

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

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

Ответы [ 4 ]

2 голосов
/ 01 июня 2010

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

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

1 голос
/ 01 июня 2010

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

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

  • Final
  • Разработка
  • небезопасный

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

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

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

0 голосов
/ 01 июня 2010

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

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

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

0 голосов
/ 01 июня 2010

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

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

...