Изменение имени пользователя в SVN + SSH URI на ходу в рабочей копии

Я использую SVN + SSH для проверки рабочей копии репозитория с сервера SVN, на котором все разработчики являются членами группы developer и имеют полные права на чтение и запись в каталоге репозитория и связанных метаданных:

svn co svn+ssh://[email protected]/path/to/repository

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

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

Проблема заключается в том, что после того, как рабочая копия будет извлечена с заданным именем пользователя с использованием схемы URI svn+ssh://, коммиты и обновления, похоже, также должны выполняться под этим именем пользователя. Это нецелесообразно по двум причинам:

1) Лицо, которое первоначально сделало выписку, может не быть лицом, совершившим фиксацию сейчас, и нам нужны сообщения post-commit и другие крючки после фиксации, чтобы точно знать, кто совершил коммит, и

2) ясно, что фиксация требует, чтобы ответственный пользователь знал пароль учетной записи лица, сделавшего первоначальную проверку, использование ключей RSA для неинтерактивной аутентификации, несмотря на причину № 1.

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

Я провел некоторое исследование и нашел этот вопрос ранее:

Изменение имени пользователя для транзакции Subversion над svn + ssh

К сожалению, предложение в принятом ответе (svn switch) не работает:

[[email protected] repo-directory]# svn switch svn+ssh://[email protected]/u/svc/repositories/repo-name
[email protected] password: 
svn: 'svn+ssh://[email protected]/u/svc/repositories/repo-name' is not the same
repository as 'svn+ssh://[email protected]/u/svc/repositories/repo-name'

Любые идеи будут высоко оценены. Заранее благодарю вас за внимание!

Ответы

Ответ 1

А, ну, неважно. Кажется, что svn switch --relocate делает трюк:

svn switch --relocate svn+ssh://[email protected]/path/to/repo svn+ssh://[email protected]/path/to/repo
Тем не менее, это громоздко. Если есть более простой способ, я открыт для предложений.

Очевидно, что можно написать алиас bash или shell- script для автоматизации этой части, я полагаю, но я бы хотел, чтобы это было проще.

Ответ 2

Он работает с ssh + svn, если вы изменяете конфигурацию своего клиента: раздел $HOME/.subversion/config туннели:

ssh = $SVN_SSH ssh -l *youruser*

Ответ 3

Вы можете сделать простое обновление с другим именем пользователя.

svn update --username <user> --password <pwd>