.gitmodules меняется с несколькими пользователями Git, вызывая постоянную головную боль - PullRequest
4 голосов
/ 14 июля 2010

позвольте мне прежде всего сказать, что я Git n00b и относительно новичок в управлении версиями.До сих пор мы хорошо поработали над использованием Git в среде Windows с Visual Studio, и, похоже, все идет хорошо.Однако то, что раздражает, это .gitmodules «битва», которую мы в настоящее время имеем в наших руках.

Если UserA создает новый субмодуль, путь в .gitmodules для «origin» будет выглядеть примерно:

ssh://usera@myserver/Repositories/NewModule

Когда я, пользователь Б, извлекаю изменения с сервера, я загружаю копию .gitmodules с этой записью.Когда я пытаюсь инициализировать новый подмодуль, я неизбежно не могу загрузить его с myserver, потому что я пользователь userb и держу только свой ключ SSH для userb.В конечном итоге мне придется изменить .gitmodules, чтобы отразить мое имя пользователя:

ssh://userb@myserver/Repositories/NewModule

И я в конечном итоге подтолкну это изменение.рекурсивная проблема нас обоих: изменение имени пользователя с UserA на UserB или наоборот.Когда кто-либо из нас тянет / толкает на сервер.

Есть идеи, как мы можем решить эту проблему?Может быть, общая учетная запись для нас обоих просто для субмодулей?Это может быть сделано?Как?Любые другие идеи, или кто-нибудь, кто решил эту проблему раньше?

Ответы [ 3 ]

1 голос
/ 19 мая 2011

Короткий ответ: «проверьте, можете ли вы использовать относительные пути для подмодулей».

Подробный ответ: у нас есть подмодуль, который используется несколькими приложениями.Мы сохранили подмодуль в том же репо.

Структура выглядит следующим образом: репо

|-app1
|-app2
|-submod

Когда мы клонируем приложение, app/.git/config получает URL с текущим пользователем, например 'userA@repo.com».В .gitmodules приложениях мы указываем URL как ../submod.Таким образом, когда мы делаем git submodule init, git генерирует абсолютный URL для подмодуля из относительного URL, который мы дали в .gitmodules.

1 голос
/ 14 июля 2010

Один из вариантов - установить Gitosis на мой сервер. URL-адрес каждого клона будет таким же, в форме ssh://git@myserver:/path/to/repo.git. Gitosis позволяет регистрировать SSH-ключи разработчиков и указывать правила аутентификации и авторизации.

Вы также можете свернуть свой собственный файл, взломав ~git/.ssh/authorized_keys на myserver и выполнив авторизацию, изменив этот пример обновления .

0 голосов
/ 14 июля 2010

Кроме того, используя gitosis, как сказал Гбэкон, вы можете немного изменить свой рабочий процесс.

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

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

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