SVN thay đổi tên người dùng


86

Tôi đã tìm thấy rất nhiều ví dụ về cách thay đổi tên người dùng cho các bản sửa đổi cụ thể, v.v.

Nhưng những gì tôi cần là đây: Tôi đã thanh toán bằng thông tin xác thực của một người bạn làm việc và cần thay đổi nó thành thông tin xác thực của tôi cho các cam kết trong tương lai.

Tôi không thể chỉ thanh toán bằng thông tin đăng nhập của mình do nhiều thay đổi đã được thực hiện ...

Có ai quen với điều này không?


Câu hỏi thú vị! Dường như không có cách nào khác ngoài việc xóa tất cả dữ liệu xác thực được lưu trữ.
Pekka

@Pekka: Câu trả lời hay. Tuy nhiên, câu hỏi không dành riêng cho TortoiseSVN.
Raphael Schweikert 22/02/12

Câu trả lời:


73

Bạn có thể thay đổi người dùng bằng

  • Subversion 1.6 trở về trước:

    svn switch --relocate protocol://currentUser@server/path protocol://newUser@server/path
    
  • Subversion 1.7 trở lên:

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

Để tìm hiểu những gì protocol://currentUser@server/pathlà, chạy

svn info

trong bản sao làm việc của bạn.


4
Tôi gặp lỗi "svn: E155024: Tiền tố URL nguồn không hợp lệ: 'protocol: // currentUser @ server / path' (không chồng chéo URL của mục tiêu 'giao thức: // newUser @ server / path')" [với các URL thực của tôi, tất nhiên]
James Roth

3
Điều này không hoạt động đối với các lược đồ xác thực http-auth thuần túy. Xem câu trả lời này để biết cách xóa thông tin đăng nhập người dùng đã lưu cho trường hợp sử dụng đó. @James đó có thể là vấn đề của bạn.
Caleb

Những thứ rực rỡ .. Thnaks :)
Karma

64

Cách dễ nhất để làm điều này là chỉ cần sử dụng tùy chọn --username trong lần thanh toán hoặc cam kết tiếp theo của bạn. Ví dụ:

svn commit --username newUser

hoặc là

svn co --username newUser

Sau đó, nó sẽ được lưu vào bộ nhớ đệm và sẽ được sử dụng làm tên người dùng mặc định cho các lệnh trong tương lai.

Xem thêm: Trong Subversion, tôi có thể là người dùng khác với tên đăng nhập của mình không?


Tôi đã làm điều đó, và sau đó svn infovà tôi thấy không có thay đổi trong Authordòng.
vsync,

2
Từ liên kết ở trên: "khi Subversion đang truy cập trực tiếp vào kho lưu trữ ngoài hệ thống tệp, nó sử dụng quyền hệ thống tệp của bạn để truy cập vào kho. (Khi bạn kết nối qua đường hầm SSH, SVN sử dụng quyền FS của bạn trên máy chủ, do bạn xác định Đăng nhập SSH.) Vì vậy, svn checkout - tên người dùng có thể không hoạt động đối với kho lưu trữ của bạn. "
Matt Browne,

1
@MattBrowne là chính xác. một đường dẫn như "svn + ssh: //svn.server.com" sẽ không tuân theo sự thay đổi - tên người dùng. Câu trả lời được chấp nhận sử dụng chuyển vị trí là cách duy nhất tôi có thể thay đổi nó.
FlipMcF

51

Tôi đã gặp vấn đề tương tự và đã tìm thấy giải pháp trong ứng dụng khách SVN lưu trữ dữ liệu xác thực người dùng ở đâu? :

  1. cdđến ~/.subversion/auth/.
  2. Làm đi fgrep -l <yourworkmatesusernameORtheserverurl> */*.
  3. Xóa tệp được tìm thấy.
  4. Thao tác tiếp theo trên kho lưu trữ sẽ hỏi lại bạn thông tin tên người dùng / mật khẩu.

(Đối với Windows, các bước là tương tự; auththư mục nằm trong %APPDATA%\Subversion\).

Lưu ý rằng điều này sẽ chỉ hoạt động đối với các lược đồ truy cập SVN trong đó tên người dùng là một phần của đăng nhập máy chủ, vì vậy nó không được sử dụng cho các kho được truy cập bằng cách sử dụng file://.


1
Đáng chú ý, rằng nếu bạn chạy IntelliJ IDEA bạn cũng phải khởi động lại IntelliJ để những thay đổi có hiệu lực
AndersG

1
các fgreplệnh nên có một -l, do đó lệnh cho bạn biết đường dẫn tập tin. Tôi đã định chỉnh sửa nó, nhưng nó không đủ dài.
vguzmanp

16

Lệnh có thể được thực thi:

svn up --username newUsername

Hoạt động hoàn hảo;)

PS Chỉ cần một gợi ý: tùy chọn "--username" có thể được thực hiện trên bất kỳ lệnh "svn" nào, không chỉ cập nhật.


5

Nếu giao thức của bạn là http và bạn đang sử dụng Subversion 1.7, bạn có thể chuyển đổi người dùng bất cứ lúc nào bằng cách sử dụng tùy chọn tên người dùng chung trên bất kỳ lệnh nào.

Khi phương pháp của Ingo không hiệu quả với tôi, thì đây là những gì tôi thấy đã hiệu quả.


3

Đi tới Tortoise SVN --> Settings --> Saved Data.

Có một tùy chọn để xóa Dữ liệu xác thực, nhấp vào nút xóa và nó sẽ cho phép bạn chọn kết nối mà bạn muốn xóa userid / pwd cho.

Sau khi bạn làm điều này, bất kỳ hoạt động kiểm tra hoặc cập nhật nào, nó sẽ nhắc nhở về userid và mật khẩu.


2

đối với Win10, bạn nên xóa thư mục này và đóng / mở IDE của mình

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

, trong dự án của tôi cũng không có thư mục ".subversion", chỉ có ".svn"


1

Ngoài ra, đối với những người tình cờ nhận ra quá muộn, rằng họ đã cam kết với thông tin đăng nhập sai, giải pháp (sau khi thực tế) là thay đổi tác giả svn của bản sửa đổi đó: xem câu hỏi này

Về cơ bản, cú pháp là:

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

1

Dựa trên giải pháp của Ingo Kegel, tôi đã tạo một tập lệnh bash "nhỏ" để thay đổi tên người dùng trong tất cả các thư mục con. Hãy nhớ:

  1. Thay đổi <NEW_USERNAME>tên người dùng mới.
  2. Thay đổi <OLD_USERNAME>tên người dùng hiện tại (nếu bạn hiện chưa đặt tên người dùng, chỉ cần xóa <OLD_USERNAME>@).

Trong đoạn mã dưới đây, lệnh svn chỉ được in ra (không được thực thi). Để lệnh svn được thực thi, chỉ cần loại bỏ echodấu và khoảng trắng phía trước nó (ngay phía trên 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

Hi vọng bạn tìm được thứ hữu dụng!


0

Tôi tin rằng bạn có thể tạo chi nhánh của riêng mình (bằng cách sử dụng thông tin đăng nhập của riêng bạn) từ cùng một thân với chi nhánh của đồng nghiệp của bạn, hợp nhất từ ​​chi nhánh của đồng nghiệp với bản sao làm việc của bạn và sau đó hợp nhất từ ​​chi nhánh của bạn. Tất cả cam kết trong tương lai phải được đánh dấu là đến từ bạn.


0

Bạn có thể yêu cầu đồng nghiệp của mình tạo một bản vá, bản vá này sẽ thu gọn tất cả các thay đổi đã được thực hiện thành một tệp duy nhất mà bạn có thể áp dụng cho việc kiểm tra của chính mình. Thao tác này sẽ cập nhật tất cả các tệp của bạn một cách thích hợp và sau đó bạn có thể hoàn nguyên các thay đổi về phía anh ấy và đăng ký của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.