SVN mengubah nama pengguna

86

Saya menemukan banyak contoh tentang cara mengubah nama pengguna untuk revisi tertentu dan sebagainya.

Tapi yang saya butuhkan adalah ini: Saya melakukan pembayaran dengan kredensial otentikasi rekan kerja dan perlu mengubahnya ke kredensial saya untuk komitmen di masa mendatang.

Saya tidak bisa begitu saja checkout dengan kredensial saya karena banyak perubahan yang telah dilakukan ...

Adakah yang tahu tentang ini?

axel freudiger
sumber
Pertanyaan menarik! Sepertinya tidak ada cara kecuali menghapus semua data autentikasi yang disimpan.
Pekka
@Pekka: Jawaban bagus. Namun, pertanyaannya tidak spesifik untuk TortoiseSVN.
Raphael Schweikert

Jawaban:

73

Anda dapat mengubah pengguna dengan

  • Subversion 1.6 dan sebelumnya:

    svn switch --relocate protocol://currentUser@server/path protocol://newUser@server/path
    
  • Subversion 1.7 dan yang lebih baru:

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

Untuk mencari tahu apa protocol://currentUser@server/pathitu, lari

svn info

dalam copy pekerjaan Anda.

Ingo Kegel
sumber
4
Saya mendapatkan pesan kesalahan "svn: E155024: Awalan URL sumber tidak valid: 'protocol: // currentUser @ server / path' (tidak tumpang tindih dengan URL target 'protocol: // newUser @ server / path')" [dengan URL asli saya, tentu saja]
James Roth
3
Ini tidak bekerja untuk skema otentikasi http-auth biasa. Lihat jawaban ini untuk mengetahui cara menghapus kredensial pengguna yang disimpan untuk kasus penggunaan tersebut. @James itu mungkin masalah Anda.
Caleb
Hal-hal yang brilian .. Terima kasih :)
Karma
64

Cara termudah untuk melakukannya adalah dengan menggunakan opsi --username pada pembayaran atau commit Anda berikutnya. Sebagai contoh:

svn commit --username newUser

atau

svn co --username newUser

Ini kemudian akan di-cache dan akan digunakan sebagai nama pengguna default untuk perintah di masa mendatang.

Lihat juga: Di Subversion dapatkah saya menjadi pengguna selain nama login saya?

Matt Browne
sumber
Saya melakukan itu, dan kemudian svn infodan saya tidak melihat ada perubahan dalam Authorantrean.
vsync
2
Dari tautan di atas: "ketika Subversion mengakses repositori langsung dari sistem file, Subversion menggunakan izin sistem file Anda untuk mengakses repositori. (Saat Anda terhubung melalui tunneling SSH, SVN menggunakan izin FS Anda di server, sebagaimana ditentukan oleh Login SSH.) Jadi svn checkout --namapengguna mungkin tidak berfungsi untuk repositori Anda. "
Matt Browne
1
@MattBne benar. jalur seperti "svn + ssh: //svn.server.com" tidak akan menerima perubahan --namapengguna. Jawaban yang diterima yang menggunakan relokasi adalah satu-satunya cara saya bisa mengubahnya.
FlipMcF
51

Saya mengalami masalah yang sama persis dan menemukan solusinya di Di mana klien SVN menyimpan data otentikasi pengguna? :

  1. cdkepada ~/.subversion/auth/.
  2. Lakukan fgrep -l <yourworkmatesusernameORtheserverurl> */*.
  3. Hapus file yang ditemukan.
  4. Operasi selanjutnya pada repositori akan meminta Anda lagi untuk informasi nama pengguna / kata sandi.

(Untuk Windows, langkah-langkahnya serupa; authdirektori ada di %APPDATA%\Subversion\).

Perhatikan bahwa ini hanya akan berfungsi untuk skema akses SVN di mana nama pengguna adalah bagian dari login server sehingga tidak digunakan untuk repositori yang diakses menggunakan file://.

Raphael Schweikert
sumber
1
Perlu diperhatikan, jika Anda menjalankan IntelliJ IDEA, Anda juga harus memulai ulang IntelliJ agar perubahan diterapkan
AndersG
1
yang fgrepperintah harus memiliki -l, sehingga perintah memberitahu Anda path file. Saya akan mengeditnya, tetapi tidak cukup lama.
vguzmanp
16

Perintah yang bisa dijalankan:

svn up --username newUsername

Bekerja dengan sempurna;)

PS Hanya petunjuk: opsi "--username" dapat dijalankan pada sembarang perintah "svn", bukan hanya update.

Aurimas
sumber
5

Jika protokol Anda adalah http dan Anda menggunakan Subversion 1.7, Anda dapat mengganti pengguna kapan saja hanya dengan menggunakan opsi global --username pada perintah apa pun.

Ketika metode Ingo tidak berhasil untuk saya, inilah yang menurut saya berhasil.

Adam Nutt
sumber
3

Pergi ke Tortoise SVN --> Settings --> Saved Data.

Ada opsi untuk menghapus Data Otentikasi, klik tombol hapus, dan ini akan memungkinkan Anda untuk memilih koneksi mana yang ingin Anda hapus userid / pwd.

Setelah Anda melakukan ini, setiap aktivitas checkout atau pembaruan, itu akan meminta ulang userid dan password.

Lemah
sumber
2

untuk Win10 Anda harus menghapus folder ini dan menutup / membuka IDE Anda

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

, juga dalam proyek saya tidak ada folder ".subversion", hanya ".svn"

bratez
sumber
1

Juga, bagi mereka yang kebetulan terlambat menyadari, bahwa mereka berkomitmen dengan kredensial yang salah, solusinya (setelah fakta) adalah mengubah penulis svn revisi itu: lihat pertanyaan ini

Pada dasarnya sintaksnya adalah:

svn propset --revprop -r (revision_number) svn:author (new username)
Patrice M.
sumber
1

Berdasarkan solusi Ingo Kegel, saya membuat skrip bash "kecil" untuk mengubah nama pengguna di semua subfolder. Ingatlah untuk:

  1. Ubah <NEW_USERNAME>ke nama pengguna baru.
  2. Ubah <OLD_USERNAME>ke nama pengguna saat ini (jika saat ini Anda tidak memiliki nama pengguna, cukup hapus <OLD_USERNAME>@).

Pada kode di bawah perintah svn hanya dicetak (tidak dijalankan). Untuk menjalankan perintah svn, cukup hapus echospasi dan di depannya (tepat di atas 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

Semoga bermanfaat!

zpon
sumber
0

Saya yakin Anda dapat membuat cabang Anda sendiri (menggunakan kredensial Anda sendiri) dari batang yang sama dengan cabang rekan kerja Anda, menggabungkan dari cabang rekan kerja Anda ke copy pekerjaan Anda dan kemudian menggabungkan dari cabang Anda. Semua komitmen masa depan harus ditandai sebagai berasal dari Anda.

Martin
sumber
0

Anda dapat meminta kolega Anda untuk membuat tambalan, yang akan menciutkan semua perubahan yang telah dibuat menjadi satu file yang dapat Anda terapkan ke pembayaran Anda sendiri. Ini akan memperbarui semua file Anda dengan tepat dan kemudian Anda dapat mengembalikan perubahan di sisinya dan memeriksa milik Anda.

Alex
sumber