SVN 사용자 이름 변경


86

특정 개정판의 사용자 이름을 변경하는 방법에 대한 많은 예를 찾았습니다.

그러나 내가 필요한 것은 이것이다. 나는 직장 동료의 인증 자격 증명으로 체크 아웃을했고 향후 커밋을 위해 그것을 내 자격 증명으로 변경해야한다.

이미 많은 변경이 이루어 졌기 때문에 내 자격 증명으로 체크 아웃 할 수 없습니다.

이것에 익숙한 사람?



@Pekka : 좋은 대답입니다. 질문은 TortoiseSVN에만 국한된 것이 아닙니다.
Raphael Schweikert 2012

답변:


73

사용자를 변경할 수 있습니다.

  • Subversion 1.6 이하 :

    svn switch --relocate protocol://currentUser@server/path protocol://newUser@server/path
    
  • Subversion 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 'protocol : // newUser @ server / path'와 겹치지 않음) '[실제 URL과 함께, 물론]
James Roth

3
이것은 일반 http-auth 인증 체계에서는 작동하지 않습니다. 해당 사용 사례에 대해 저장된 사용자 자격 증명을 삭제하는 방법 은 이 답변 을 참조하십시오 . @James 아마 당신의 문제입니다.
Caleb

Brilliant stuff .. Thnaks :)
Karma

64

이를 수행하는 가장 쉬운 방법은 다음 체크 아웃 또는 커밋에서 --username 옵션을 사용하는 것입니다. 예를 들면 :

svn commit --username newUser

또는

svn co --username newUser

그런 다음 캐시되고 향후 명령의 기본 사용자 이름으로 사용됩니다.

참조 : Subversion에서 로그인 이름이 아닌 다른 사용자가 될 수 있습니까?


그랬더니 라인에 svn info변화가 보이지 않습니다 Author.
vsync 2014

2
위 링크에서 : "Subversion이 파일 시스템에서 직접 저장소에 액세스 할 때 파일 시스템 권한을 사용하여 저장소에 액세스합니다. (SSH 터널링을 통해 연결할 때 SVN은 서버에 대한 FS 권한을 사용합니다. SSH 로그인.) 따라서 svn checkout --username이 저장소에서 작동하지 않을 수 있습니다. "
Matt Browne 2014

1
@MattBrowne이 정확합니다. "svn + ssh : //svn.server.com"과 같은 경로는 --username 변경을 따르지 않습니다. relocate를 사용하는 허용 된 답변은 내가 변경할 수있는 유일한 방법이었습니다.
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

완벽하게 작동합니다.)

추신 : 힌트 : "--username"옵션은 업데이트뿐만 아니라 모든 "svn"명령에서 실행할 수 있습니다.


5

프로토콜이 http이고 Subversion 1.7을 사용하는 경우, 모든 명령에서 global --username 옵션을 사용하여 언제든지 사용자를 전환 할 수 있습니다.

Ingo의 방법이 저에게 효과가 없었을 때 이것이 효과가 있음을 발견했습니다.


3

로 이동하십시오 Tortoise SVN --> Settings --> Saved Data.

인증 데이터를 지우는 옵션이 있으며 지우기 버튼을 클릭하면 사용자 ID / 비밀번호를 지우려는 연결을 선택할 수 있습니다.

이 작업을 수행 한 후 모든 체크 아웃 또는 업데이트 활동은 사용자 ID와 암호를 다시 묻습니다.


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의 솔루션을 기반으로 모든 하위 폴더의 사용자 이름을 변경하는 "작은"bash 스크립트를 만들었습니다. 기억해:

  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.