Я использую SVN + SSH для извлечения рабочей копии репозитория с сервера SVN, на котором все разработчики являются членами группы developer
и имеют полные права на чтение / запись в каталоге репозитория и связанных метаданных:
svn co svn+ssh://someuser@svn.server/path/to/repository
Несколько разработчиков работают над одной и той же рабочей копией, извлеченной из общей учетной записи оболочки (root
). Поскольку этот репозиторий используется для контроля версий конфигурации в производственной среде, это неизбежно. Предоставление каждому разработчику отдельной учетной записи оболочки на целевой машине (той, на которой выполняется проверка) будет одним из способов решения этой проблемы, поскольку тогда у каждого из них может быть собственная рабочая копия, но, к сожалению, это здесь неприемлемо.
У нас есть различные перехваты после фиксации, которые отправляют электронные письма с подробными сведениями о коммитах, в том числе имя пользователя, совершившего изменение.
Проблема заключается в том, что после извлечения рабочей копии с заданным именем пользователя с использованием схемы svn+ssh://
URI коммиты и обновления также должны выполняться под этим именем пользователя. Это нежизнеспособно по двум причинам:
1) Человек, который первоначально сделал проверку, может не быть тем, кто делает коммит сейчас, и нам нужны электронные письма после фиксации и другие хуки после фиксации, чтобы точно знать, кто сделал фиксацию, и
2) ясно, что для фиксации требуется, чтобы коммитирующий пользователь знал пароль учетной записи лица, сделавшего первоначальную проверку, использование ключей RSA для неинтерактивной аутентификации, несмотря на причину № 1.
Есть ли способ динамически отключить имя пользователя удаленной учетной записи, которая используется для аутентификации в этом сценарии?
Я провел некоторое исследование и нашел этот вопрос ранее:
Изменение имени пользователя для фиксации Subversion через svn + ssh
К сожалению, предложение в принятом ответе (svn switch
) не работает:
[root@db repo-directory]# svn switch svn+ssh://user2@10.250.10.1/u/svc/repositories/repo-name
user2@10.250.10.1's password:
svn: 'svn+ssh://user1@10.250.10.1/u/svc/repositories/repo-name' is not the same
repository as 'svn+ssh://user2@10.250.10.1/u/svc/repositories/repo-name'
Любые идеи будут с благодарностью. Заранее благодарю за внимание!