2009-08-23 3 views
1

코드를 동기화하기 위해 tortoiseSVN을 사용합니다. 하지만 최근에 나는 그다지 편리하지 않은 무언가가 있음을 발견했습니다. 파일을 수정할 때 a.jsp, 과 동료가이 파일 a.jsp 을 수정할 수 있다고 가정 해 봅시다. 충돌이 발생할 수 있으며, 먼저 코드를 체크인해야합니다. 및 다른 하나는 최신 버전으로 업데이트 한 다음 충돌을 하나씩 해결해야합니다.이 오류는 실제로 발생합니다.SVN을 사용하여 코드를 동기화하는 방법은 무엇입니까?

그래서 나는 편집 할 때 a.jsp를 잠글 수 있고 다른 동료가 동시에 파일을 수정하는 것을 막을 수있는 거북 SVN의 일부 기능이 필요합니다. tortoiseSVN에서 "잠금"기능을 시도했지만 작동하지 않습니다. a.jsp 파일을 잠그면 동료가 승격 및 경고없이 동시에이 파일을 수정할 수 있습니다. 이 파일을 수정하고 있습니다. "...

더 좋은 해결책이 있습니까? 미리 감사드립니다 !!

답변

5

는 가장 유연한 워크 플로우를 잠글 필요가없는 것입니다. 그러나 이 실제로 파일을 잠 그려는 경우을 사용하면 Subversion에서이 기능을 제공합니다.

잠글 필요가있는 파일에 svn:needs-lock 속성을 추가하고 값을 * (실제로 속성 값이 중요하지 않다고 생각합니다)으로 설정하십시오. 그런 다음 체크 아웃 또는 업데이트 할 때 Subversion은 작업 사본에서 읽기 전용으로 해당 파일을 표시하여 먼저 잠그도록 상기시켜줍니다.

Subversion을 사용하여 파일을 잠글 것입니다. 이미이 옵션을 찾았으나 잠금이 필요하지 않은 파일에는 아무 것도 수행하지 않습니다. 그러면 파일이 디스크에 읽기 - 쓰기됩니다. 그런 다음 변경하십시오. 파일을 체크인하면 Subversion은 자동으로 잠금을 해제합니다 (그러나 원하는 경우 유지할 수있는 옵션이 있습니다). 그런 다음 파일은 작업 복사본에서 다시 읽기 전용이됩니다.

Subversion에서 잠금은 "권고"입니다. 이것은 누군가 다른 사람이 이미 그것을 가지고있을지라도 누군가가 자물쇠를 강제로 획득 할 수 있음을 의미합니다. 이 경우 워크 플로는 여전히 지원됩니다. 누군가가 잠금없이 그대로 변경 내용을 병합해야 할 수도 있기 때문입니다.

마지막으로 파일 잠금은 이미지 파일이나 MS Word 파일과 같이 Subversion의 텍스트가 아닌 파일을 처리하는 가장 좋은 방법입니다. Subversion은 이러한 유형의 파일을 자동으로 병합 할 수 없으므로 자문 잠금은 두 사람이 동시에 같은 파일을 편집하지 않도록합니다.

+0

예, 감사합니다. 파일을 잠그는 속성을 추가하려고합니다. – MemoryLeak

0

거북이는 변경 사항으로 코드를 업데이트하면 시도 할 수있는 "병합"옵션이 있습니다.

6

예, 더 나은 솔루션, 그것은 3 개 부분으로 구성되어있다 :

  1. 잠 절대로

    , 당신은 동일한 파일에서 작동하지 마십시오
  2. 필요, 또는 적어도 정확한 않는다 다른 사람과 동시에 파일의 동일한 부분
  3. 이렇게하면 병합에 만족하십시오.

병합은 SVN과 같은 소스 제어 시스템을 사용하는 일반적인 부분입니다. 당신은 그것을 두려워해서는 안되며, 행복하게 받아 들여야합니다.

일반적으로 여분의 동일한 영역에서 작업하지 않는 한 병합은 자동으로 수행 될 수 있습니다. 이 경우 수동으로 변경해야합니다 (단, TortiseSVN의 diff 도구가 도움이됩니다).

이렇게 많은 일이 발생하면 프로젝트에서 작업을 할당하는 방법을 다시 평가할 것을 제안합니다.

+0

예, 체크인하십시오. 병합 UI가 표시되며 sync.d에 체크인하기 전에 업데이트하지 마십시오. 다시 한번 감사드립니다. – MemoryLeak

0

"체크인 댄스 (The Check-In Dance)"라고 불리는 SVN 사용자 (특히 민첩한 SVN 사용자) 사이에는 실무가 있습니다. 이 간단한 방법은 코드를 SVN 저장소로 체크인 할 때 발생하는 충돌의 양을 대폭 줄여줍니다. 다음과 같이 진행됩니다.

repo의 일부 변경 사항을 확인할 준비가되었을 때 : 1. 먼저 다른 사람의 변경 사항을 적용하려면 업데이트를 수행하십시오. 2. 빌드 스크립트를 실행하십시오 (또는 빌드 스크립트가없는 경우 컴파일하십시오). 3. 모두 정상이면 변경 사항을 커밋하십시오.

잠금을 설정하면 문제가 발생합니다. 잠금을 설정하면 사람들이 파일을 "잠금 해제"하는 것을 잊어 버리는 경향이 있습니다. 다른 사람이 파일을 변경해야하는 경우 완전히 작업 할 수 없습니다.

SVN의 병합 충돌은 매우 쉽습니다. TortoiseSVN 사용에 익숙해지면 잠금 사용은 문제가되지 않습니다.이 도움이

희망, 다른 사람에 의해 언급 한 바와 같이 리

관련 문제