SVN เปลี่ยนชื่อผู้ใช้


86

ฉันพบตัวอย่างมากมายเกี่ยวกับวิธีการเปลี่ยนชื่อผู้ใช้สำหรับการแก้ไขเฉพาะและอื่น ๆ

แต่สิ่งที่ฉันต้องการคือสิ่งนี้ฉันได้ทำการชำระเงินด้วยข้อมูลรับรองการตรวจสอบสิทธิ์ของเพื่อนร่วมงานและจำเป็นต้องเปลี่ยนเป็นข้อมูลรับรองของฉันสำหรับการกระทำในอนาคต

ฉันไม่สามารถชำระเงินด้วยข้อมูลประจำตัวของฉันได้เนื่องจากมีการเปลี่ยนแปลงหลายอย่างที่ได้ดำเนินการไปแล้ว ...

ใครคุ้นเคยกับเรื่องนี้บ้าง?


คำถามที่น่าสนใจ! ดูเหมือนจะไม่มีวิธีใดนอกจากการล้างข้อมูลการตรวจสอบสิทธิ์ที่จัดเก็บไว้ทั้งหมด
Pekka

@Pekka: ตอบดี. คำถามไม่ได้เจาะจงเฉพาะ TortoiseSVN
Raphael Schweikert

คำตอบ:


73

คุณสามารถเปลี่ยนผู้ใช้ด้วยไฟล์

  • การโค่นล้ม 1.6 และก่อนหน้านี้:

    svn switch --relocate protocol://currentUser@server/path protocol://newUser@server/path
    
  • การโค่นล้ม 1.7 ขึ้นไป:

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

หากต้องการทราบว่าprotocol://currentUser@server/pathคืออะไรให้เรียกใช้

svn info

ในสำเนาการทำงานของคุณ


4
ฉันได้รับข้อผิดพลาด "svn: E155024: คำนำหน้า URL ต้นทางไม่ถูกต้อง: 'protocol: // currentUser @ server / path' (ไม่ทับซ้อนโปรโตคอล URL ของเป้าหมาย: // newUser @ server / path ')" [ด้วย URL จริงของฉัน แน่นอน]
James Roth

3
วิธีนี้ใช้ไม่ได้กับแบบแผน http-auth authenticaton ธรรมดา ดูคำตอบนี้สำหรับวิธีลบข้อมูลรับรองผู้ใช้ที่บันทึกไว้สำหรับกรณีการใช้งานนั้น @ เจมส์นั่นอาจเป็นปัญหาของคุณ
Caleb

ของเด็ด .. Thnaks :)
กรรม

64

วิธีที่ง่ายที่สุดคือใช้ตัวเลือก - ชื่อผู้ใช้ในการชำระเงินหรือคอมมิตครั้งต่อไป ตัวอย่างเช่น:

svn commit --username newUser

หรือ

svn co --username newUser

จากนั้นจะถูกแคชและจะใช้เป็นชื่อผู้ใช้เริ่มต้นสำหรับคำสั่งในอนาคต

ดูเพิ่มเติม: ในการโค่นล้มฉันสามารถเป็นผู้ใช้อื่นที่ไม่ใช่ชื่อล็อกอินของฉันได้หรือไม่?


ฉันทำอย่างนั้นแล้วsvn infoก็ไม่เห็นการเปลี่ยนแปลงใดAuthor
vsync

2
จากลิงก์ด้านบน: "เมื่อ Subversion กำลังเข้าถึงที่เก็บโดยตรงจากระบบไฟล์ระบบจะใช้สิทธิ์ระบบไฟล์ของคุณเพื่อเข้าถึงที่เก็บ (เมื่อคุณเชื่อมต่อผ่าน SSH tunneling SVN จะใช้สิทธิ์ FS ของคุณบนเซิร์ฟเวอร์ตามที่คุณกำหนด เข้าสู่ระบบ SSH) ดังนั้นการชำระเงิน svn - ชื่อผู้ใช้อาจใช้ไม่ได้กับที่เก็บของคุณ "
Matt Browne

1
@MattBrowne ถูกต้อง เส้นทางเช่น "svn + ssh: //svn.server.com" จะไม่เป็นไปตาม - การเปลี่ยนชื่อผู้ใช้ คำตอบที่ยอมรับซึ่งใช้การย้ายตำแหน่งเป็นวิธีเดียวที่ฉันสามารถเปลี่ยนแปลงได้
FlipMcF

51

ฉันมีปัญหาเดียวกันและพบวิธีแก้ปัญหาในไคลเอนต์ SVN เก็บข้อมูลการตรวจสอบผู้ใช้ที่ไหน :

  1. cdถึง~/.subversion/auth/.
  2. ทำfgrep -l <yourworkmatesusernameORtheserverurl> */*.
  3. ลบไฟล์ที่พบ
  4. การดำเนินการต่อไปในที่เก็บจะถามข้อมูลชื่อผู้ใช้ / รหัสผ่านจากคุณอีกครั้ง

(สำหรับ Windows ขั้นตอนจะคล้ายคลึงกันauthไดเร็กทอรีอยู่ใน%APPDATA%\Subversion\)

หมายเหตุว่านี้จะทำงานให้ SVN file://รูปแบบการเข้าถึงที่ชื่อผู้ใช้เป็นส่วนหนึ่งของการเข้าสู่ระบบเซิร์ฟเวอร์เพื่อให้มันใช้งานสำหรับการเก็บไม่เข้าถึงได้โดยใช้


1
ที่น่าสังเกตว่าหากคุณเรียกใช้ IntelliJ IDEA คุณต้องรีสตาร์ท IntelliJ เพื่อให้การเปลี่ยนแปลงมีผล
AndersG

1
fgrepคำสั่งควรจะมี-lเพื่อให้คำสั่งบอกคุณเส้นทางของแฟ้ม ฉันกำลังจะแก้ไข แต่ก็ไม่นานพอ
vguzmanp

16

คำสั่งที่สามารถดำเนินการได้:

svn up --username newUsername

ทำงานได้อย่างสมบูรณ์;)

ป.ล. เพียงคำใบ้: ตัวเลือก "- ชื่อผู้ใช้" สามารถเรียกใช้งานได้กับคำสั่ง "svn" ใด ๆ ไม่ใช่แค่อัปเดต


5

หากโปรโตคอลของคุณคือ http และคุณใช้ Subversion 1.7 คุณสามารถเปลี่ยนผู้ใช้ได้ตลอดเวลาโดยใช้ตัวเลือก global --username ในคำสั่งใด ๆ

เมื่อวิธีการของ Ingo ไม่ได้ผลสำหรับฉันนี่คือสิ่งที่ฉันพบว่าได้ผล


3

Tortoise SVN --> Settings --> Saved Dataไปที่

มีตัวเลือกในการล้างข้อมูลการรับรองความถูกต้องคลิกที่ปุ่มล้างและจะช่วยให้คุณสามารถเลือกการเชื่อมต่อที่คุณต้องการล้างรหัสผู้ใช้ / pwd สำหรับ

หลังจากที่คุณดำเนินการนี้ไม่ว่าจะเป็นกิจกรรมการชำระเงินหรือการอัปเดตใด ๆ ระบบจะแสดงรหัสผู้ใช้และรหัสผ่าน


2

สำหรับ Win10 คุณควรลบโฟลเดอร์นี้และปิด / เปิด IDE ของคุณ

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

นอกจากนี้ในโปรเจ็กต์ของฉันไม่มีโฟลเดอร์ ".subversion" เฉพาะ ".svn"


1

นอกจากนี้สำหรับผู้ที่รู้ตัวช้าเกินไปว่าพวกเขากระทำโดยใช้ข้อมูลประจำตัวที่ไม่ถูกต้องวิธีแก้ไข (หลังจากข้อเท็จจริง) คือเปลี่ยนผู้เขียน svn ของการแก้ไขนั้น: ดูคำถามนี้

โดยทั่วไปไวยากรณ์คือ:

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

1

จากโซลูชันของ Ingo Kegelฉันได้สร้างสคริปต์ทุบตี "ขนาดเล็ก" เพื่อเปลี่ยนชื่อผู้ใช้ในโฟลเดอร์ย่อยทั้งหมด อย่าลืม:

  1. เปลี่ยน<NEW_USERNAME>เป็นชื่อผู้ใช้ใหม่
  2. เปลี่ยน<OLD_USERNAME>เป็นชื่อผู้ใช้ปัจจุบัน (หากคุณยังไม่ได้ตั้งชื่อผู้ใช้ในขณะนี้ให้ลบออก<OLD_USERNAME>@)

ในโค้ดด้านล่างคำสั่ง svn จะพิมพ์ออกมาเท่านั้น (ไม่ได้ดำเนินการ) หากต้องการให้คำสั่ง svn ดำเนินการเพียงแค่ลบechoและช่องว่างด้านหน้า (ด้านบน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

หวังว่าจะเป็นประโยชน์!


0

ฉันเชื่อว่าคุณสามารถสร้างสาขาของคุณเองได้ (โดยใช้ข้อมูลประจำตัวของคุณเอง) จากลำต้นเดียวกันกับสาขาของเพื่อนร่วมงานของคุณรวมจากสาขาของเพื่อนร่วมงานไปยังสำเนาการทำงานของคุณแล้วรวมจากสาขาของคุณ การกระทำในอนาคตทั้งหมดควรถูกทำเครื่องหมายว่ามาจากคุณ


0

คุณสามารถขอให้เพื่อนร่วมงานของคุณสร้างแพตช์ซึ่งจะยุบการเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นเป็นไฟล์เดียวที่คุณสามารถนำไปใช้กับการชำระเงินของคุณเองได้ การดำเนินการนี้จะอัปเดตไฟล์ทั้งหมดของคุณอย่างเหมาะสมจากนั้นคุณสามารถยกเลิกการเปลี่ยนแปลงในฝั่งของเขาและเช็คอินของคุณได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.