Git: Работа в команде через филиалы без разрешения Push - PullRequest
5 голосов
/ 11 июля 2011

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

Команда Десептикон имеет полный доступ к хранилищу с возможностью push и pull и отвечает за структуру.

Команда Автобот умеет тянуть, но не толкать. Как правило, нет проблем, если члены команды работают независимо. Однако возникают случаи, когда было бы полезно вытащить и подтолкнуть к другой ветке членов команды. На данный момент Автобот не был предоставлен push-доступ Десептикон (легкое исправление), поэтому требуется обходной путь.

Пример варианта использования: рассмотрим, сделал ли Optimus (для продолжения метафоры трансформаторов) следующее:

#!/bin/bash
optimus@workstation0:~/git/work_project/> git branch sdev /sprint/dev --track
optimus@workstation0:~/git/work_project/> git checkout sdev
optimus@workstation0:~/git/work_project/> touch important_file.py
optimus@workstation0:~/git/work_project/> git add important_file.py
optimus@workstation0:~/git/work_project/> git commit -m "Important file added."

Теперь Родимус должен помочь Оптимус , отредактировав Important_file.py. Он создает свою собственную ветку и тянет прямо из ветви Оптимуса и пытается нажать:

#!/bin/bash
rodimus@workstation1:~/git/work_project/> git branch sdev /sprint/dev --track
rodimus@workstation1:~/git/work_project/> git pull ~optimus/git/work_project sdev
rodimus@workstation1:~/git/work_project/> echo "'''TODO: Add content''' > important_file.py
rodimus@workstation1:~/git/work_project/> git commit -m "Added TODO".
rodimus@workstation1:~/git/work_project/> git push ~optimus/git/work_project sdev

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

1 Ответ

3 голосов
/ 11 июля 2011

Обновление 2014 (3 года спустя)

Как уже упоминалось Адриен Бе в комментарии

В Stash реализованы разрешения на уровне ветви

См. " Использование разрешения филиала "

https://confluence.atlassian.com/download/attachments/313460915/STASH20_branch_perm_adv.png?version=4&modificationDate=1376470584184&api=v2&effects=border-simple,blur-border


Оригинальный ответ (июль 2011 г.)

Обычным решением является второй репо, где:

  • Team Autobot может нажать на
  • Команда Десептикон может регулярно получать и видеть, есть ли что-то, что нужно объединить

Но для этого потребуется второй репо.

Другое решение с использованием инфраструктуры авторизации, такой как Gitolite , для предоставления push-доступа к ветке Autobot .
Для этого требуется только одно репо, но с сервером (ssh или apache), способным аутентифицировать пользователя, отправляющего в указанное репо (поскольку локальный протокол не имеет аутентификации).

Так что оба решения нелегко исправить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...