2011-10-06 16 views
75

Ho trovato molti esempi su come modificare lo username per revisioni specifiche e così via.SVN cambia nome utente

Ma quello che mi serve è questo: Ho fatto un checkout con le credenziali di autenticazione di un compagno di lavoro e ho bisogno di cambiarlo con le mie credenziali per futuri commit.

Non posso cassa con le mie credenziali a causa dei molti cambiamenti che sono stati fatti già ...

Chiunque abbia familiarità con questo?

+0

Interessante domanda: non sembra esserci un modo tranne che per cancellare tutti i dati di autenticazione memorizzati. (http://blog.ansuz.nl/index.php/2008/10/13/tortoise- svn-change-repository-credentials /) –

+0

@Pekka: buona risposta.Tuttavia la domanda non era specifica per TortoiseSVN. –

risposta

65

È possibile modificare l'utente con

per scoprire che cosa protocol://[email protected]/path è, r un

svn info 

nella copia di lavoro.

+3

Viene visualizzato un errore "svn: E155024: prefisso URL origine non valido: 'protocollo: // currentUser @ server/percorso '(non si sovrappone al protocollo URL' target: // newUser @ server/percorso ') "[con i miei URL reali, ovviamente] –

+2

Questo non funziona per schemi di autenticazione semplici http-auth. Vedi [questa risposta] (http://stackoverflow.com/a/9391129/313192) per come eliminare le credenziali dell'utente salvate per tale caso d'uso. @James che probabilmente è il tuo problema – Caleb

+0

roba brillante .. Thnaks :) – Karma

0

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

0

Puoi chiedere al tuo collega di creare una patch, che comprime tutte le modifiche che sono state apportate in un singolo file che puoi applicare al tuo checkout. Questo aggiornerà tutti i tuoi file in modo appropriato e quindi è possibile ripristinare le modifiche sul suo lato e verificare la vostra in

48

ho avuto lo stesso identico problema e trovato la soluzione in Where does SVN client store user authentication data?:.

  1. cd a ~/.subversion/auth/.
  2. Do fgrep -l <yourworkmatesusernameORtheserverurl> */*.
  3. Elimina il file trovato.
  4. L'operazione successiva sul repository richiederà di nuovo le informazioni sul nome utente/password.

(per Windows, i passi sono analoghi, la directory auth è 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 è utilizzabile per i repository accessibili tramite file://.

+1

Vale la pena notare che, se si esegue IntelliJ IDEA tu anche riavviare IntelliJ affinché le modifiche abbiano effetto – AndersG

+1

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

+0

ha funzionato come un incanto, grazie! – pubsy

50

Il modo più semplice per farlo è semplicemente utilizzare l'opzione --nomeutente al successivo pagamento o commit.Per esempio:

svn commit --username newUser

o

svn co --username newUser

Sarà poi memorizzati nella cache e verrà utilizzato come nome utente predefinito per i comandi futuri.

Consulta anche: In Subversion can I be a user other than my login name?

+1

+1 per una soluzione semplice –

+0

L'ho fatto, quindi "svn info" e non vedo alcun cambiamento nella riga "Autore". – vsync

+1

Dal link sopra: "quando Subversion accede al repository direttamente dal file system, utilizza le autorizzazioni del file system per accedere al repository. (Quando ci si connette tramite il tunneling SSH, SVN utilizza le autorizzazioni FS sul server, come determinato da il tuo login SSH.) Quindi svn checkout --username potrebbe non funzionare per il tuo repository. " –

4

Se il protocollo è http e si utilizza Subversion 1.7, è possibile passare l'utente in qualsiasi momento, semplicemente utilizzando l'opzione --username globale su qualsiasi comando.

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

+0

si prega di fornire un codice di esempio – vsync

1

Inoltre, per coloro che si trovava a rendersi conto troppo tardi, che hanno commesso con le credenziali errate, la soluzione (dopo il fatto) è quello di cambiare l'autore svn di quella revisione: vedi this question

Fondamentalmente la sintassi è :

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

sulla base di Ingo Kegel's solution ho creato uno script "piccolo" bash per cambiare il nome utente in tutte le sottocartelle. Ricorda di:

  1. Cambia <NEW_USERNAME> nel nuovo nome utente.
  2. Sostituire <OLD_USERNAME> con il nome utente corrente (se al momento non è stato impostato alcun nome utente, rimuovere semplicemente <OLD_USERNAME>@).

Nel codice sottostante il comando svn viene stampato solo (non eseguito). Per far eseguire il comando svn, è sufficiente rimuovere lo echo e gli spazi bianchi di fronte ad esso (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!

2

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

Esiste un'opzione per cancellare i dati di autenticazione, fare clic sul pulsante Cancella, e vi permetterà di selezionare per quale connessione si desidera cancellare userid/pwd.

Dopo aver eseguito questa operazione, qualsiasi attività di verifica o aggiornamento, verrà riproposta l'id utente e la password.

3

È molto semplice. Dovresti semplicemente eseguire

svn up --username newUserName 

Questo è tutto.

1

per Win10 è necessario rimuovere questa cartella e vicino/apertura di un IDE

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

, anche nei miei progetti no " .subversion "solo cartelle".svn "