SVN змінити ім'я користувача


86

Я знайшов багато прикладів того, як змінити ім'я користувача для конкретних версій тощо.

Але що мені потрібно, це наступне: я зробив замовлення з автентифікаційними даними колеги, і мені потрібно змінити їх на свої облікові дані для майбутніх комітів.

Я не можу просто замовити свої облікові дані через багато змін, які вже були зроблені ...

Хтось знайомий з цим?


Цікаве питання! Здається, немає способу, окрім як очистити всі збережені дані автентифікації.
Pekka

@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-адреси: 'protocol: // currentUser @ server / path' (не перекриває URL-адресу цільової URL-адреси 'protocol: // newUser @ server / path')" [з моїми реальними URL-адресами, звичайно]
Джеймс Рот,

3
Це не працює для простих схем автентифікації http-auth. Дивіться цю відповідь, як видалити збережені облікові дані користувача для цього випадку використання. @James, це, мабуть, твоя проблема.
Калеб,

Блискучі речі .. Thnaks :)
Карма

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.03.16

51

У мене була точно така ж проблема, і я знайшов рішення в Де клієнт SVN зберігає дані автентифікації користувачів? :

  1. cdдо ~/.subversion/auth/.
  2. Роби fgrep -l <yourworkmatesusernameORtheserverurl> */*.
  3. Видаліть знайдений файл.
  4. Наступна операція над сховищем знову запитає вас про ім’я користувача / пароль.

(Для Windows кроки аналогічні; authкаталог знаходиться %APPDATA%\Subversion\).

Зауважте, що це буде працювати лише для схем доступу SVN, де ім'я користувача є частиною входу на сервер, тому це не використовується для сховищ, до яких здійснюється доступ file://.


1
Варто зазначити, що якщо ви запустите IntelliJ IDEA, вам також доведеться перезапустити IntelliJ, щоб зміни
набули

1
fgrepкоманда повинна мати -l, так що команда говорить вам шлях до файлу. Я збирався його відредагувати, але це недостатньо довго.
vguzmanp

16

Команда, яку можна виконати:

svn up --username newUsername

Працює ідеально;)

PS Лише підказка: параметр "--username" можна виконати з будь-якою командою "svn", а не просто оновити.


5

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

Коли метод Інго не спрацював для мене, це виявилося ефективним.


3

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

Існує можливість очистити дані автентифікації, натиснути на кнопку очищення, і це дозволить вам вибрати, для якого з’єднання ви хочете очистити userid / pwd.

Після цього, під час будь-якої перевірки чи оновлення, вам буде запропоновано ідентифікатор користувача та пароль.


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

Сподіваюся, вам це стане в нагоді!


0

Я вважаю, що ви можете створити власну гілку (використовуючи власні облікові дані) з того самого стовбура, що і гілка колеги, об’єднати з гілки колеги у робочу копію, а потім об’єднати з вашої гілки. Усі майбутні коміти повинні бути позначені як такі, що надходять від вас.


0

Ви можете попросити колегу створити виправлення, яке згорне всі внесені зміни в один файл, який ви можете застосувати до власного виїзду. Це оновить всі ваші файли належним чином, а потім ви зможете повернути зміни на його боці та зареєструватися.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.