2009-11-09 10 views
13

Sto utilizzando SVN + SSH per controllare una copia di lavoro del repository da un server SVN in cui tutti gli sviluppatori sono membri di un gruppo e hanno pieno lettura/scrittura autorizzazioni sulla directory repository e metadati associati:Modifica nome utente in UI SVN + SSH al volo nella copia di lavoro

svn co svn+ssh://[email protected]/path/to/repository 

Diversi sviluppatori lavorano sulla stessa copia di lavoro che è stato estratto con un account di shell condivisa (root). Poiché questo repository viene utilizzato per il controllo della revisione della configurazione in un ambiente di produzione, questo è inevitabile. Dando ad ogni sviluppatore un singolo account di shell sul computer di destinazione (quello su cui viene eseguito il checkout) sarebbe un modo per risolvere questo problema perché allora ognuno di essi può avere la propria copia di lavoro, ma sfortunatamente questo non è accettabile qui.

Abbiamo vari hook di post-commit che inviano e-mail che dettagliano i commit, incluso il nome utente della persona che ha eseguito il commit.

Il problema è che una volta che una copia di lavoro viene estratta con un dato nome utente usando lo schema URI svn+ssh://, sembra che anche i commit e gli aggiornamenti debbano essere fatti con quel nome utente. Questo non è fattibile per due motivi:

1) La persona che ha originariamente effettuato il checkout potrebbe non essere la persona che effettua un commit ora, e abbiamo bisogno delle e-mail post-commit e di altri hook post-commit per sapere esattamente che ha effettuato il commit e

2) in modo chiaro, un commit richiede che l'utente che ha commesso la password dell'account della persona che ha effettuato il checkout originale, l'uso di chiavi RSA per l'autenticazione non interattiva nonostante il motivo # 1.

C'è un modo per disattivare dinamicamente il nome utente dell'account remoto che viene utilizzato per l'autenticazione in questo scenario?

ho fatto qualche ricerca e ho trovato questa domanda in precedenza:

Changing the username for a Subversion commit over svn+ssh

Purtroppo, il suggerimento nella risposta accettata (svn switch) non funziona:

[[email protected] repo-directory]# svn switch svn+ssh://[email protected]/u/svc/repositories/repo-name 
[email protected]'s password: 
svn: 'svn+ssh://[email protected]50.10.1/u/svc/repositories/repo-name' is not the same 
repository as 'svn+ssh://[email protected]/u/svc/repositories/repo-name' 

Tutte le idee sarebbero notevolmente apprezzato. Grazie in anticipo per la vostra considerazione!

risposta

16

Ah, beh, non importa. Sembra che svn switch --relocate fa il trucco:

svn switch --relocate svn+ssh://[email protected]/path/to/repo svn+ssh://[email protected]/path/to/repo 

E 'ingombrante, però. Se c'è un modo più semplice, sono aperto a suggerimenti.

Ovviamente, si può scrivere un alias o script di shell bash per automatizzare questa parte, suppongo, ma vorrei che fosse più semplice di così.

+1

Se si desidera cambiare il vostro utente per svn + ssh, provate eseguendo 'export SVN_SSH = "ssh newuser -l"' in un terminale. Ciò ha dimostrato di essere la soluzione più semplice per me. – marktani

5

Si potrebbe fare un semplice aggiornamento anche con un altro nome utente.

svn update --username <user> --password <pwd> 
+4

Se non sbaglio, funziona solo con svnserve, non con svn + ssh. –

+0

Devo ammettere, non l'ho provato con il protocollo 'svn + ssh'. Ma funziona con il protocollo 'http' e non solo con svnserve. – tangens

26

Funziona con ssh + svn se si modifica di configurazione del vostro cliente: $ HOME /.subversion/configtunnel sezione:

ssh = $SVN_SSH ssh -l *youruser* 
+2

+1 Questo sembra funzionare magnificamente per consentire a più utenti di lavorare su un singolo check svn + ssh. –

+1

Grazie. Vorrei solo aggiungere che, per trarre vantaggio dal tuo suggerimento, è molto importante eseguire il checkout del repository senza aggiungere esplicitamente il nome utente nell'URL di SVN. Significa che devi solo eseguire il comando "svn co svn + ssh: //svn.server/path/to/repository" – freedev

+0

[highlevelbits] (http://highlevelbits.com/2007/04/svn-over-ssh- prompts-for-wrong-username.html) annota un'alternativa: è possibile specificare i nomi utente per host. –

Problemi correlati