SVN

- 특정 revision으로 복구 후 다시 서버로 커밋하기 -


svn을 사용하다보면 특정 revision으로 롤백하여 복구해야 하는 경우가 생기는데, revision으로 돌아가는 방법은 많다. 

 

update to revision, switch, ... 등 여러 방법들이 존재하는데, 혼자 svn을 사용하는거면 상관 없지만 여러 사람이 svn을 사용하게 되면 저 방법들은 로컬에서만 적용되기 때문에 svn 서버에는 적용되지 않아 update할 경우 다시 원상복구된다.

 

그래서 서버의 특정 revision의 상태로 다시 커밋을 하고 싶었으나 위 방법들로 롤백을 시킨 뒤 커밋을 눌러보면 커밋대상에 아무것도 뜨지 않는다.

 

이제 작업 내용을 롤백하고 다시 커밋하는 방법에 대해 알아보자.


우선 tortoiseSVN을 대상으로 정리하는 글이기 때문에 tortoiseSVN기반으로 설명한다.

복구하고자 하는 곳으로 가서 [마우스 우클릭]- [Merge] 를 클릭해주자.

 


그러면 아래와 같은 창이 나올텐데

 Merge a range of revisions를 선택 후 [Next]를 눌러주자


다음 화면에서 svn 경로는 자동으로 잡히니

specific range를 선택 후 [Show log] 버튼을 클릭해주자.


다음 svn log 화면에서

롤백을 원하는 버전들을 선택해주면 된다.

shift 나 ctrl 버튼을 눌러가며 여러개 선택이 가능하다.

 

각 revision에 대해서만 롤백시키는거라

아래 화면에서 1712까지 전부 롤백 시키고자 한다면 1728 ~ 1712까지 전부 선택해 주어야한다.


선택이 완료되었으면 아래와 같이 revision들이 나열될텐데

그 아래 Reverse merge를 선택한 후 [Next] 버튼을 클릭하자.


그리고 마지막 화면으로 넘어오는데

Ignore ancestry를 선택해도되고 안해도된다.

빠른 작업을 위해 선택해주는것도 좋다.

그리고 [Merge]버튼을 클릭해주자.


Merge버튼을 눌러주었다면 이제 해당 revision들이 롤백되면서 막 로그가 올라올텐데

완료가 되었다면

 

이제 [마우스 우클릭] - [commit] 을 눌러보면 방금 복구한것들을 commit할 수 있을것이다.

 

만약 작업 도중에 충돌이 나거나 그러면

revert 기능을 사용해서 다 제거해주고 충돌 원인을 해결한 뒤 본문 작업을 다시 실행해주자.

반응형

이클립스에서 SVN log(커밋 커멘트)를 수정하는 방법에 대해 알아보자

 

우선 HISTORY 를 봐야 수정을 할 수 있기 때문에 

우리가 log를 보고싶거나 수정하고 싶은 대상을 클릭하고 확인해준다.

보통 전체 log를 보기 위해선 프로젝트를 대상으로 history를 체크해준다.

 

[마우스 우클릭] - [Team] - [Show History]

를 클릭해주자.



그럼 하단에 History 라는 탭이 생긴것을 볼 수 있다.

해당 프로젝트의 이클립스 버전과 날짜 comment log 등을 확인할 수 있고

그아래에 변경된 사항 역시 확인이 가능하다.



거기서 이제 자신이 바꾸고싶은 comment가 있는 부분을 선택하여

 

[마우스 우클릭] - [Show Revision Properties]

를 클릭해주자.



그러면 Revision Properties 라는 이 생기고

svn:log 부분에서 

[마우스 우클릭] - [Edit...]

을 선택해주자



이제 log을 변경하고싶은 comment를 작성하고 OK를 눌러주면 끝이다.



[ 에러 ]

 

만약 아래와 같은 에러가 나면 svn log를 변경할 수 없는 상태이다.

관리자가 있으면 hook을 생성해 달라고 요청하고

본인이 관리자 혹은 파일 관리 권한이 있으면 hook을 생성해주면 된다.

pre-revprop-change hook 오류 해결

 

반응형

공동 작업을 할때 commit을 하게되면 comment를 작성할 수 있게되는데

가끔 나도모르게 바로 commit을 할 경우가 생긴다

 

하지만 SVN 커밋을 하고나서 comment log 를 수정하고자 하면 다음과 같은 에러가 발생한다.

 

에러와 SVN comment log 수정방법을 정리해보자

 

pre-revprop-change hook either failed or is non-existent

에러가 발생하는데 정확한 에러는 다음과 같다.


SVN: 'Set revision property' operation finished with error: svn: E175002: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent
svn: E175002: Error setting property log:
Repository has not been enabled to accept revision propchanges;
ask the administrator to create a pre-revprop-change hook
svn: E175002: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent
svn: E175002: Error setting property log:
Repository has not been enabled to accept revision propchanges;
ask the administrator to create a pre-revprop-change hook


기본적으로 설정되어있는게 commit을 완료한 것에 대한 comment log를 수정할 수 없게 해놓았다.

그래서 별도로 설정을 해주어야하는데 보통 관리자한테 요청을 하기 마련이다.

 

SVN같은경우 Repository 가 따로 존재하는데

 

해당 경로를 찾아가야한다.

 

나같은경우는 D드라이브에 위치하였다.

 

Repository 위치가 D:\Repository\test인 경우

hook 처리는 D:\Repository\test\hooks 디렉터리 아래의 파일들이 처리하도록 되어 있습니다. 

pre-revprop-change.tmpl 을 복사 붙여넣기해서

복사본을 메모장으로 열어서 다음과 같은 명령어를 넣어준다.

(기존 내용을 전부 지우고 아래 내용으로 채워주면 된다.)


rem Only allow log messages to be changed.

if "%4" == "svn:log" exit 0

echo Property '%4' cannot be changed >&2

exit 1


그리고 해당 복사본의 파일 확장자를

pre-revprop-change.bat

배치파일로 바꿔 저장하고나서

 

해당 폴더에 그대로 둔뒤

 

다시 commit한 대상의 comment log를 수정해보면 수정이 잘 되는것을 확인할 수 있다.

(수정된 log는 바뀌기 전으로 못돌리니 잘못 바꿨다가는 원상복구 못시키니 따로 백업을 해두자)

 

여기서 이제 혹시나 다른사람들이 실수할까봐 혹은 자기만 수정하고 다시 수정 못하게 막아두려면

 

간단하다

 

해당 bat파일을 다시 삭제해주면 된다.

 

그러면 다시 원래대로 수정이 불가한 에러가 발생하는것을 볼 수 있다.

(수정할때만 bat파일을 넣어서 하면 된다.)

 

반응형

 

SVN Server를 이용하여 TortoiseSVN을 통한 형상관리에 대해 정리해보자

 

프로젝트를 진행하거나 단체로 문서작업을 해야할때

외부에서도 IP 로 접속가능하게 하기 위해 SVN Server를 사용하는것이다.

 

SVN Server 를 사용하여 하는 방법만 따로 정리해두고

나머지는 사용법이 같으니 정리하지않는다.

기본 사용법 (공통)

(위 URL에 들어가면 기본적인 사용법이 정리되어있다.)


흔하게 다들 알고 있는 SVN Server인 VisualSVN을 사용하도록하자

" VisualSVN 설치 "

 

VisualSVN은 설치하고나면 기본적으로 저장소와 폴더가 만들어지기 마련이다.

 

기본적으로 주어지는것 말고도 폴더를 새로 만들어서 진행해보도록 하자



폴더를 새로 만들었다면

 

이제 접속 계정을 만들어줘야한다

보통 같이 작업하는 인원수만큼 계정을 만들어주고

각자에게 계정을 하나씩 분배해주는식으로 작업한다.

 

(작업의 순서는 의미가없다...)



이제 작업을 하기 위해선 원하는곳에서 Check Out을 한다음 작업을 하기 마련인데

 

그러기 위해선 경로를 알아야한다. 

경로를 파악하는 방법은 다음과 같다.

 

그냥 위에 써있는 주소 그대로 쓰거나 해당 폴더 마우스 우클릭 

URL 복사를 클릭해 주면 참 간단하다.



나머지는 공통적으로 사용법이 같다 

Checkout을 클릭하고 방금 복사한 URL을 경로로 지정해주면 끝이다.

 

보통 이방식으로 자신이 사용한다면  흰색부분에 localhost가 들어갈 것이고

다른 사람과 같이 쓴다면 ip주소를 입력해주면된다.



그냥 가볍게 이런식으로 붙어서 사용하면 되는것이고 

기본적인 사용법은 전부 공통이기때문에 따로 정리해두진 않는다.

 

기본 사용법 (공통)


 

반응형

 

 

그냥 단순하게 로컬에서만 사용하고자 할대는

굳이 SVN Server인 VisualSVN이 필요하지 않다.

 

TortoiseSVN만 이용하여 로컬에서만 사용하는 법을 정리해보자


앞서 설치를 했다면 

마우스 우클릭은 할 경우(어디서든) 다음과같이 나올것이다.



문서를 보존해주기 위해 저장소를 만들어줘야하는데

그 저장소를 통해 Checkout하여 내려받거나 Commit Update로 형상관리가 가능하다.

 

폴더를 하나 만들어서 해당 폴더를 대상으로 Create repository here 을 눌러 저장소로 지정해주자

(폴더에 우클릭해도 상관없고 해당 폴더 안에 들어가서 우클릭 해도 상관없다)



그럼 아래와같이 여러가지 파일들이 생성되고

저장소가 생성되었다는 창과 함께 저장소 경로가 나오게된다.

경로는 잘 알아두도록 하자



해당 폴더를 그대로 형상관리를 위해 사용해도 상관없지만

그냥 저장소안에 폴더를 하나 더 만들어서 관리해주는게 좋을거같다.

 

우리가 지정한 저장소에 직접 데이터를 넣고자 하면 import를 사용해 주어야한다.

파일을 넣고 import를 눌러보자



그럼 아래와 같은 창이 뜨면서 해당 저장소에 등록이 된것이다.



그럼이제 해당 저장소를 다른곳에서 불러 작업을 해보자

원하는 지점에가서(폴더나 장소) SVN Checkout을 눌러보자

저장소 안에있는것들을 불러올수있다.



그러면 해당 저장소에서 불러올 폴더나 파일의 경로를 지정해주면

다음과같이 체크표시가 떠있는 폴더나 파일이 생기는것을 볼 수 있다.



이제 막 파일 넣고 이것저것 문서작업해서 추가해서 넣었다면

아래와같이 새로작업한 파일들은 체크표시가 되어있지않다.

 

만약 작업한 것들을 저장소에 등록하고 싶다면

Commit을 눌러주면된다.

 



자신이 새로 작업한 파일의 리스트가 아래에 뜨고

원하는것들만 골라 commit을 할 수 있다.



따로 Check out 을 해둔 폴더에는 위에서 새로 commit한 파일의 정보가 없는데

최신화, 현행화 시킬경우에 Update를 클릭해주면된다.

(항상 commit에 앞서 Update를 해주는 습관을 들이자.)



그럼 다음과 같이 나오고 Update로 인해 아까 commit한 파일들을 불러왔다.



이것으로 기본적인 사용법은 얼추 알았으며

 

작업할때마다 보이는 version 즉 버전이 있는데 저것이 형상관리의 핵심이다

 

나중에 작업하다가 실수를 했다면 예전에 작업한 버전으로 돌아갈수가 있기 때문이다.

 

돌아가는 방법은 나~중에...

 

그리고 저장소만 멀쩡하다면 Check out 한 폴더나 파일은 무슨짓을 하든 상관없다.

(지우거나 수정해서 commit하면 그대로 반영되니까 commit만 안하면된다.)

 

 

추신 :  저장소는 이렇게 귀여운 아이콘이 제공된다.

반응형
  1. newbie 2021.04.29 16:36

    고맙습니다 잘보고갑니다~!!

  2. 안녕핫세요 2021.06.29 17:55

    안녕하세요! 시간이 꽤 지났지만, 포스트가 정말 도움이 많이 되었습니다 ㅜㅜ 감사합니다!
    제가 svn을 처음 사용해서 그런데, checkout 하여 계속 변경하는 곳 말고 commit 한 것이 반영되어 log를 가지는 원본? 소스? 그곳에 파일 탐색기로 보면 비어있고,
    repo-browser를 하여야 보이더라구요.

    그렇게만 보여도 제 로컬에만 저장되어있는 것이 맞는지, 그 폴더를 지워버리면 싹 사라지는게 맞는지 궁금하여 댓글 남깁니다 ㅜㅜ
    저도 모르게 원격저장을 하고 있을까봐 걱정되어서요! 기밀코드를 혼자 형상관리 하다보니 조마조마하는 마음에 여쭤봅니다 ㅜㅜ

    • BlogIcon 썸머워즈 2021.06.29 20:29 신고

      svn server를 따로 두고 사용하고있나요?
      repo-browser에서 보인다면 저장소에 존재한다고 보시면 됩니다.

    • BlogIcon 아니요! 2021.06.30 12:13

      로컬에 create repository 해가지구 만들었는데, repo하면 보입니당! 근데 그냥 눈으로 안보이니까 불안해서요 ㅠㅠ 버전관리는 어디 저장소에 되고있는건지, 리비젼 관리한다고 어디 혹시 git처럼 오픈 서버 저장소같은데 올라가고 있는게 아닌지...

      기우였나보네요..! 빠른답변 정말정말 감사드립니당 ㅜㅜ!

    • BlogIcon 썸머워즈 2021.07.01 20:06 신고

      아~ 로컬 저장소면 딱히 걱정할필요는 없겠네요! repo로 보인다해도 다른사람이 접근은 못하니까요 즐거운 하루 되세요~ :D

    • BlogIcon ㅜㅜ 2021.07.05 10:48

      답글 너무너무 감사합니다!! ㅜㅜㅜㅜ 복받으실거에요 ㅜㅜ 적게 공부하고 모든걸 아시고, 조금 일하시고 많은 돈 버세요...!!!

TortoiseSVN을 설치해보자

 

회사에 가보니 내가 배웠던 VisualSVN을 쓰기보단 TortoiseSVN을 많이 쓰더라

 

처음 써본 기념으로 다운로드 및 설치 방법을 정리해둔다.


https://tortoisesvn.net/downloads.html

위 경로를 타고 들어가

 

본인이 원하는 버전과 사양에 맞는것을 설치해주자

(던파 광고가 딸려들어왔네;)



실제로 위에서 해당 버튼을 클릭하면 아래와 같은 화면으로 넘어갈텐데

 

별 의미없다 여타 다운로드 사이트처럼 하단에 다운로드가 안되면 수동설치하는 페이지이다.

(이미 다운로드가 되고 있을것이다.)



이제 다운로드된 .msi 파일로 설치를 진행해보자

당연히 Next를 눌러주자



그다음 Browse 를 클릭해 경로를 설정해준다음(다른 경로해줄경우만)

Next를 눌러준다.



그다음 Install을 눌러주면 끝!



Finish를 눌러 닫아주자



자 이제 설치는 끝났으며

 

보통 TortoiseSVN을 Client 라고 많이하며

Server를 필요로 하는데 그 Server 역할을 VisualSVN이 할것이다.

 

쉽게 말하면 서로가 서로를 필요로하기때문에 둘다 있어야한다.

(로컬에서 사용하려면 굳이 필요는없다...)

 

VisualSVN 다운로드 및 설치

 

아직 없다면 다운로드 및 설치를 진행하고 

 

다음에 사용법을 알아보자

 

반응형