SVN изменить имя пользователя

86

Я нашел много примеров того, как изменить имя пользователя для конкретных ревизий и так далее.

Но мне нужно следующее: я выполнил проверку с учетными данными для аутентификации товарища по работе, и мне нужно изменить их на мои учетные данные для будущих коммитов.

Я не могу просто оформить заказ с моими учетными данными из-за множества изменений, которые уже были сделаны ...

Кто-нибудь знаком с этим?

Аксель Фрейдигер
источник
Интересный вопрос! Кажется, нет другого способа, кроме очистки всех сохраненных данных аутентификации.
Пекка
@Pekka: Хороший ответ. Однако вопрос не относился к TortoiseSVN.
Рафаэль Швейкерт,

Ответы:

73

Вы можете изменить пользователя с помощью

  • Subversion 1.6 и ранее:

    svn switch --relocate protocol://currentUser@server/path protocol://newUser@server/path
    
  • Subversion 1.7 и новее:

    svn relocate protocol://currentUser@server/path protocol://newUser@server/path
    

Чтобы узнать, что protocol://currentUser@server/pathэто, запустите

svn info

в вашей рабочей копии.

Инго Кегель
источник
4
Я получаю сообщение об ошибке «svn: E155024: Недопустимый префикс URL-адреса источника: 'протокол: // currentUser @ server / path' (не перекрывает целевой URL-адрес 'protocol: // newUser @ server / path')» [с моими реальными URL-адресами, конечно]
Джеймс Рот
3
Это не работает для простых схем аутентификации http-auth. См. Этот ответ, чтобы узнать, как удалить сохраненные учетные данные пользователя для этого варианта использования. @ Джеймс, это, наверное, твоя проблема.
Калеб
Блестящий материал .. Thnaks :)
Karma
64

Самый простой способ сделать это - просто использовать параметр --username при следующей проверке или фиксации. Например:

svn commit --username newUser

или

svn co --username newUser

Затем оно будет кэшировано и будет использоваться в качестве имени пользователя по умолчанию для будущих команд.

См. Также: Могу ли я быть пользователем в Subversion, кроме моего логина?

Мэтт Браун
источник
Я сделал это, а затем svn infoи не вижу изменений в Authorстроке.
vsync
2
По приведенной выше ссылке: «когда Subversion обращается к репозиторию напрямую из файловой системы, она использует права вашей файловой системы для доступа к репозиторию. (Когда вы подключаетесь через SSH-туннелирование, SVN использует ваши разрешения FS на сервере, как определено вашим SSH-вход.) Таким образом, svn checkout --username может не работать для вашего репозитория. "
Мэтт Браун
1
@MattBrowne верен. такой путь, как "svn + ssh: //svn.server.com", не учитывает изменение --username. Принятый ответ, в котором используется перемещение, был единственным способом, которым я мог его изменить.
FlipMcF 02
51

У меня была такая же проблема, и я нашел решение в разделе Где клиент SVN хранит данные аутентификации пользователя? :

  1. cdк ~/.subversion/auth/.
  2. Делай fgrep -l <yourworkmatesusernameORtheserverurl> */*.
  3. Удалите найденный файл.
  4. Следующая операция с репозиторием снова попросит вас ввести имя пользователя / пароль.

(Для Windows действия аналогичны; authкаталог находится внутри %APPDATA%\Subversion\).

Обратите внимание, что это будет работать только для схем доступа SVN, где имя пользователя является частью входа на сервер, поэтому он не используется для репозиториев, к которым осуществляется доступ с помощью file://.

Рафаэль Швейкерт
источник
1
Стоит отметить, что если вы запустите IntelliJ IDEA, вам также придется перезапустить IntelliJ, чтобы изменения вступили в силу
AndersG
1
в fgrepкоманде должен быть символ -l, чтобы команда сообщала вам путь к файлу. Я собирался его отредактировать, но он недостаточно длинный.
vguzmanp
16

Команда, которую можно выполнить:

svn up --username newUsername

Прекрасно работает;)

PS Просто подсказка: параметр "--username" может быть выполнен с любой командой "svn", а не только с обновлением.

Ауримас
источник
5

Если ваш протокол - http и вы используете Subversion 1.7, вы можете переключить пользователя в любое время, просто используя глобальную опцию --username в любой команде.

Когда метод Инго не работал у меня, я обнаружил, что это работает.

Адам Натт
источник
3

Перейти к Tortoise SVN --> Settings --> Saved Data.

Существует возможность очистить данные аутентификации, нажать кнопку очистки, и это позволит вам выбрать, для какого соединения вы хотите очистить идентификатор пользователя / пароль.

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

Ван
источник
2

для Win10 вы должны удалить эту папку и закрыть / открыть IDE

C: \ Users \ User \ AppData \ Roaming \ Subversion \ auth

, также в моих проектах нет папок ".subversion", только ".svn"

братез
источник
1

Кроме того, для тех, кто слишком поздно осознал, что совершил совершение с неправильными учетными данными, решение (постфактум) состоит в том, чтобы изменить svn-автора этой ревизии: см. Этот вопрос

В основном синтаксис:

svn propset --revprop -r (revision_number) svn:author (new username)
Патрис М.
источник
1

На основе решения Инго Кегеля я создал "небольшой" сценарий bash для изменения имени пользователя во всех подпапках. Запомни:

  1. Измените <NEW_USERNAME>на новое имя пользователя.
  2. Измените <OLD_USERNAME>на текущее имя пользователя (если у вас в настоящее время не задано имя пользователя, просто удалите <OLD_USERNAME>@).

В приведенном ниже коде команда svn только распечатывается (не выполняется). Чтобы выполнить команду svn, просто удалите echoперед ней пробелы и (чуть выше popd).

for d in */ ; \
do echo $d ; pushd $d ; \
url=$(svn info | grep "URL: svn") ; \
url=$(echo ${url#"URL: "}) ; \
newurl=$(echo $url | sed "s/svn+ssh:\/\/<OLD_USERNAME>@/svn+ssh:\/\/<NEW_USERNAME>@/") ; \
echo "Old url: "$url ; echo "New url: "$newurl ; \
echo svn relocate $url $newurl ; \
popd ; \
done

Надеюсь, что вы найдете ее полезной!

zpon
источник
0

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

Мартин
источник
0

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

Alex
источник