Как установить разрешения или изменить процесс git commit при использовании локальных репозиториев - PullRequest
0 голосов
/ 04 июня 2010

У меня есть сервер с центральным git-репозиторием и одна из сред разработки моего коллеги. Хранилище моего коллеги по происхождению - центральное хранилище git, и он отправляет туда, когда у него есть какой-то код, которым можно поделиться. Аналогично, я разрабатываю локально и отправляю в центральное хранилище git, когда у меня есть некоторый код для совместного использования, поэтому источником моего хранилища является также центральное хранилище git.

Проблема в том, что у меня есть центральный репозиторий git в домашнем каталоге пользователя "git". Поэтому, когда я нажимаю, я на самом деле SSH на сервер в качестве пользователя "git". Чтобы быть еще более понятным, мой конфиг имеет следующие строки:

$ more .git/config 
[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = git@development.mydomain.com:fsg
[branch "master"]
        remote = origin
        merge = refs/heads/master

Когда я нажимаю, git легко обрабатывает этот SSH +, я предполагаю что-то вроде оболочки git. Проблема в том, что когда мой коллега нажимает, он входит в систему как пользователь для себя и получает кучу сумасшедших ошибок разрешения. Есть ли типичный способ решения этой проблемы без открытия каталогов git для группы? Я думаю, что это будет проблематично, когда я нажимаю и поэтому перезаписываю репозиторий, и эти разрешения сбрасываются.

Спасибо!

Ответы [ 2 ]

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

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

Я считаю это можно сделать с помощью

git remote set-url origin ssh://git@server/path
git remote set-url --push origin ssh://git@server/path

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

РЕДАКТИРОВАТЬ : или просто

git config --replace-all remote.origin.url ssh://git@server/path

Я думаю.

0 голосов
/ 26 мая 2011

Вместо того, чтобы входить в систему с одним и тем же пользователем, мы хотели иметь свои собственные логины и затем устанавливать разрешения после отправки. Это было легко сделать, настроив группу, членами которой являются все разработчики, а затем с помощью хука post-receive, чтобы установить группу на объектах.

chgrp -R git /path/to/repo.git/objects

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

Мое окружение

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