В Subversion я могу быть пользователем, отличным от моего логина?

253

Я хотел бы знать, как Subversionизменить имя, под которым отображаются мои изменения.

Я только начинаю использовать Subversion. В настоящее время я использую его для контроля версий на ноутбуке с XP, где я всегда захожу под именем своей жены. Я хотел бы, чтобы DB Subversion показывал изменения под моим именем.

Позже я скопирую БД, чтобы она была доступна для всего дома. Моя жена использует офисный компьютер, где она всегда заходит под моим именем. Я, вероятно, настрою его так, чтобы он автоматически проверял измененные документы ... желательно под ее именем.

В конце концов я, вероятно, буду использовать его с Linux-машины под другим именем пользователя.

Есть ли способ изменить пользовательскую среду, чтобы изменить имя пользователя, которое вам называет Subversion? Я ожидаю что-то вроде установки, SVN_USERNAME='Mark'которая переопределит, но обычно получает имя.

Обновление: похоже, что --usernameфлаг, на который ссылается Майкл, работает для изменения имени, о котором сообщается "svn stat", даже для локального файла: репозитории. Кроме того, он липкий, поэтому вам не нужно указывать его для следующей команды. Я даже перезагрузился, и он все еще использовал "--username"значение из моей предыдущей загрузки.

рынки
источник

Ответы:

280

Большинство команд Subversion используют --usernameопцию для указания имени пользователя, которое вы хотите использовать в хранилище. Subversion запоминает последнее имя пользователя и пароль хранилища, использованные в каждой рабочей копии, что означает, среди прочего, что при использовании svn checkout --username myuserвам больше никогда не потребуется указывать имя пользователя.

Как говорит Камиль Кисиэль , когда Subversion обращается к хранилищу непосредственно из файловой системы (то есть URL-адрес хранилища имеет форму file:///path/to/repoили file://file-server/path/to/repo), он использует разрешения вашей файловой системы для доступа к хранилищу. А когда вы подключаетесь через SSH tunneling ( svn+ssh://server/path/to/repo), SVN использует ваши разрешения FS на сервере , как определено вашим логином SSH. В этих случаях svn checkout --usernameможет не работать для вашего хранилища.

Майкл Ратанапинта
источник
Спасибо за быстрый ответ. Флаг --username выглядит очень липким даже при перезагрузке. И это прекрасно работает на моем файле: хранилище.
продает
70

Для svn over ssh попробуйте:

svn list svn+ssh://[user_name]@server_name/path_to_repo  

SVN предложит вам user_nameпароль.

aminalid
источник
1
Не работает с именами пользователей, такими как: johndoe@example.com
neoneye
4
https://user_name@.../pathне работает для меня (Cygwin), но --usernameработает нормально.
Zelanix
44

Вы можете установить имя пользователя по умолчанию через ~ / .subversion / servers:

[groups]
yourgroupname = svn.example.com

[yourgroupname]
username = yourusername

Помните, что старые версии svn не поддерживают его (например, 1.3.1 [sic!]).

blueyed
источник
37
"svn co --username=yourUserName --password=yourpassword http://path-to-your-svn"

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

Chethan
источник
4
Будьте внимательны при вводе пароля в командной строке. Любой, кто увидит список процессов на компьютере, сможет увидеть пароль в списке процессов. Хорошо для однопользовательской системы, но не так хорошо для многопользовательской.
Блеат
12

Если вам нужно указать имя пользователя, отличное от вашего вошедшего в систему пользователя, для использования с svn + ssh, просто добавьте запись в ваш файл .ssh / config :

Хост example.com
Пользователь jdoe
Аарон Дэнсижер
источник
man ssh_config расскажет вам все об этом. Я еще не нашел способ сделать это динамическим (например, на основе переменной среды).
bbaassssiiee
11

Subversion обычно запрашивает мое «Subversion username», если мне не удается войти в систему под моим именем пользователя. Поэтому, когда я ленив (обычно), я просто позволю ему спросить у меня мой пароль, и я нажму клавишу ввода, и дождусь запроса имени пользователя и использую мое имя пользователя Subversion.

В противном случае решение Майкла - это хороший способ сразу указать имя пользователя.

Бо Сименсен
источник
1
Я считаю, что это лучший ответ, потому что он работает для всех команд SVN (checkout, commit и т. Д.), Где флаг --username кажется несуществующим или немного отличающимся для различных команд ...
edwardsharp
7

Большинство ответов, кажется, для svn + ssh, или, кажется, не работают для нас.

Для доступа по http самый простой способ выйти из системы пользователя SVN из командной строки:

rm ~/.subversion/auth/svn.simple/*

Наконечник шляпы: http://www.yolinux.com/TUTORIALS/Subversion.html

Дэнни Шоманн
источник
6

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

См. Http://svnbook.red-bean.com/en/1.5/svn-book.html#svn.serverconfig.choosing

Камил Кисиэль
источник
6

Использование Subversion с модулем Apache или svnserve. Я был в состоянии выполнять операции, используя несколько пользователей --username.

Каждый раз, когда вы вызываете команду Subversion как «новый» пользователь, в вашем $HOME/.subversion/auth/<authentication-method>/каталоге будет кеширована новая запись для этого пользователя (при условии, что вы можете аутентифицироваться с помощью правильного пароля или метода аутентификации для сервера, с которым вы связываетесь как этот конкретный пользователь) ,

Дон Уэйкфилд
источник
2

Если вы используете svn + ssh для подключения к хранилищу, то единственная вещь, которая аутентифицирует вас и авторизует вас, это ваши учетные данные ssh. ВСЕ остальное игнорируется. Ваше имя пользователя будет зарегистрировано в Subversion точно так же, как оно установлено в вашем ssh-соединении. Отличным объяснением этого является jimmyg.org/blog/2007/subversion-over-svnssh-on-debian.html

codeMonster
источник
2

Перейдите ~/.subversion/auth/svn.simple/*, и вы увидите список файлов, который содержит информацию о вашей учетной записи пользователя SVN. Просто удалите все остальные, которые вам не нужны.

После этого, когда вы делаете все, что касается работы SVN, например, commit, rm и т. Д. Вам будет предложено снова ввести имя пользователя или пароли.

Алан Донг
источник
-1

TortoiseSVN всегда запрашивает имя пользователя. (если вы не скажете это не делать)

рекурсивный
источник
Нет, это не так. Не на 1.9.5 для Linux, по крайней мере.
drkvogel
Он использует ваше локальное имя пользователя по умолчанию, что не всегда то, что вы хотите при подключении к удаленному хранилищу.
drkvogel
-3

Я считаю, что вы можете установить SVN_USERпеременную окружения, чтобы изменить свое имя пользователя SVN.

Софи Альперт
источник
3
Можете ли вы предоставить ссылку на это? Я выполнил поиск и нашел только svn_username, который является патчем, который кто-то сделал, и я не могу сказать, добрался ли он до основной линии или нет ... Я думаю, я бы нашел другие хиты, если это так.
продает