SVN cambia nome utente


86

Ho trovato molti esempi su come modificare il nome utente per revisioni specifiche e così via.

Ma quello di cui ho bisogno è questo: ho effettuato un checkout con le credenziali di autenticazione di un collega e ho bisogno di cambiarle con le mie credenziali per futuri commit.

Non posso semplicemente effettuare il checkout con le mie credenziali a causa dei molti cambiamenti che sono già stati fatti ...

Qualcuno ha familiarità con questo?


Domanda interessante! Non sembra esserci un modo se non cancellare tutti i dati di autenticazione memorizzati.
Pekka

@Pekka: buona risposta. La domanda non era specifica per TortoiseSVN, però.
Raphael Schweikert

Risposte:


73

Puoi cambiare utente con

  • Subversion 1.6 e versioni precedenti:

    svn switch --relocate protocol://currentUser@server/path protocol://newUser@server/path
    
  • Subversion 1.7 e versioni successive:

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

Per scoprire cos'è protocol://currentUser@server/path, corri

svn info

nella tua copia di lavoro.


4
Ricevo un errore "svn: E155024: Prefisso URL di origine non valido:" protocol: // currentUser @ server / path "(non si sovrappone all'URL di destinazione" protocol: // newUser @ server / path ")" [con i miei URL reali, naturalmente]
James Roth

3
Questo non funziona per semplici schemi di autenticazione http-auth. Vedi questa risposta per come eliminare le credenziali utente salvate per quel caso d'uso. @ James questo è probabilmente il tuo problema.
Caleb

Roba geniale .. Thnaks :)
Karma

64

Il modo più semplice per farlo è usare semplicemente l'opzione --username al tuo prossimo checkout o commit. Per esempio:

svn commit --username newUser

o

svn co --username newUser

Verrà quindi memorizzato nella cache e verrà utilizzato come nome utente predefinito per i comandi futuri.

Vedi anche: In Subversion posso essere un utente diverso dal mio nome di accesso?


L'ho fatto, e poi svn infoe non vedo alcun cambiamento nella Authorlinea.
vsync

2
Dal collegamento sopra: "quando Subversion accede al repository direttamente dal file system, utilizza le autorizzazioni del file system per accedere al repository. (Quando ti connetti tramite tunneling SSH, SVN utilizza i tuoi permessi FS sul server, come determinato dal tuo Accesso SSH.) Quindi svn checkout --username potrebbe non funzionare per il tuo repository. "
Matt Browne

1
@ MattBrowne è corretto. un percorso come "svn + ssh: //svn.server.com" non rispetterà la modifica di --username. La risposta accettata che utilizza il trasferimento era l'unico modo per cambiarla.
FlipMcF

51

Ho avuto lo stesso identico problema e ho trovato la soluzione in Dove il client SVN memorizza i dati di autenticazione utente? :

  1. cda ~/.subversion/auth/.
  2. Fare fgrep -l <yourworkmatesusernameORtheserverurl> */*.
  3. Elimina il file trovato.
  4. La prossima operazione sul repository ti chiederà di nuovo le informazioni su nome utente / password.

(Per Windows, i passaggi sono analoghi; la authdirectory è in %APPDATA%\Subversion\).

Si noti che questo funzionerà solo per gli schemi di accesso SVN in cui il nome utente fa parte dell'accesso al server, quindi non è utile per i repository a cui si accede utilizzando file://.


1
Vale la pena notare che se esegui IntelliJ IDEA devi anche riavviare IntelliJ affinché le modifiche
abbiano

1
il fgrepcomando dovrebbe avere un -l, in modo che il comando indichi il percorso del file. Stavo per modificarlo, ma non è abbastanza lungo.
vguzmanp

16

Il comando che può essere eseguito:

svn up --username newUsername

Funziona perfettamente;)

PS Solo un suggerimento: l'opzione "--username" può essere eseguita su qualsiasi comando "svn", non solo sull'aggiornamento.


5

Se il tuo protocollo è http e stai usando Subversion 1.7, puoi cambiare utente in qualsiasi momento semplicemente usando l'opzione globale --username su qualsiasi comando.

Quando il metodo di Ingo non ha funzionato per me, questo è quello che ho scoperto che ha funzionato.


3

Vai a Tortoise SVN --> Settings --> Saved Data.

C'è un'opzione per cancellare i dati di autenticazione, fare clic sul pulsante cancella e ti permetterà di selezionare la connessione per cui desideri cancellare l'ID utente / pwd.

Dopo aver eseguito questa operazione, qualsiasi attività di checkout o aggiornamento, verrà nuovamente richiesta l'ID utente e la password.


2

per Win10 dovresti rimuovere questa cartella e chiudere / aprire il tuo IDE

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

, anche nei miei progetti nessuna cartella ".subversion", solo ".svn"


1

Inoltre, per chi si è accorto troppo tardi di essersi impegnato con credenziali sbagliate, la soluzione (dopo il fatto) è cambiare lo svn autore di quella revisione: vedere questa domanda

Fondamentalmente la sintassi è:

svn propset --revprop -r (revision_number) svn:author (new username)

1

Sulla base della soluzione di Ingo Kegel ho creato un "piccolo" script bash per cambiare il nome utente in tutte le sottocartelle. Ricordati di:

  1. Modificare <NEW_USERNAME> al nuovo nome utente.
  2. Passa <OLD_USERNAME>al nome utente corrente (se attualmente non hai impostato un nome utente, rimuovilo semplicemente <OLD_USERNAME>@).

Nel codice sottostante il comando svn viene solo stampato (non eseguito). Per eseguire il comando svn, è sufficiente rimuovere lo echospazio bianco e davanti (appena sopra 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

Spero che lo trovi utile!


0

Credo che potresti creare il tuo ramo (usando le tue credenziali) dallo stesso tronco del ramo del tuo collega, unirlo dal ramo del tuo compagno di lavoro alla tua copia di lavoro e poi unirlo dal tuo ramo. Tutti i commit futuri dovrebbero essere contrassegnati come provenienti da te.


0

Potresti chiedere al tuo collega di creare una patch, che comprimerà tutte le modifiche apportate in un unico file che puoi applicare al tuo check out. Questo aggiornerà tutti i tuoi file in modo appropriato e quindi potrai annullare le modifiche dalla sua parte e archiviare le tue.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.