2009-05-22 7 views
4

저는 집에서 git을 가지고 놀았으며 로컬 커밋에 대한 아이디어를 정말 좋아합니다. 내 잠재적으로 깨진 코드를 모든 사람에게 퍼뜨리지 않고 작은 변경을 할 수 있다는 것은 커밋이 빈번 해짐에 따라 작은 변경을 되돌릴 수있을뿐만 아니라 좋은 결과입니다.SVN + Visual Studio 환경에서 Git을 로컬로 사용하려면 어떻게해야합니까?

나는 git-svn 명령에 대해 읽었지만 어떻게 작동하는지 완전히 알지 못한다. 우리는 Visual Studio 2008 프로젝트를 작업하고, VisualSVN을 실행하여 IDE 내에서 파일 이름 바꾸기, 이동 및 모든 작업을 처리합니다.

내가 알고 싶은 것은 다음과 같습니다. 로컬 git 저장소에 커밋 할 수도 있지만 원격 SVN 저장소에도 커밋 할 수 있습니까? 나는 VisualSVN 변경 사항을 추적하고 IDE 내에서 커밋하고 싶지만, git을 사용하여 임시로 변경 사항을 저장할 수도 있습니다. 그들은 서로의 길을 가지려고합니까?

답변

1

원격 저장소에서 "업데이트"를 유지하기 위해 git-svn을 사용했지만 svn 저장소를 커밋하는 데 사용하지 않았으므로이 부분에 대해서는 당신을 도울 수 없습니다. 당신이 무엇

는 기본의 모든 설정, 간단하다

>git svn init <url......> 
>git svn fetch 

하면, 그것은 "자식 - svn의"라는 "원격"브랜치로 가져 오는 것을 할

. 현재 브랜치와 병합하려면, 당신은 자식 - svn을 사실 후 사용하는 경우

>git merge git-svn 

당신은 몇 가지 문제로 실행할 수 있습니다. 내가 의미하는 바는 이미 svn을 사용하여 프로젝트를 체크 아웃했다면 로컬 작업 svn 디렉토리에 git 저장소도 만들었습니다. 그런 다음 git-svn을 사용합니다. 내가 처리했다

두 가지 문제 :

  1. 라인 엔딩. svn은 줄 끝을 창으로 변환 할 수 있지만 은 유닉스 스타일로 유지합니다. 따라서 라인 결말의 차이로 인해 많은 충돌이 발생할 수 있습니다.

    확실하게 도구를 사용하여 모든 파일의 줄 끝을 유닉스 (또는 svn repo에서 사용 된 줄 끝 부분에 따라 다름)로 변환하십시오.

  2. svn 키워드 확장. 예 : $Id$

    git-svnsvn은 이러한 키워드를 확장하지 않습니다. 그래서 갈등도있을 것입니다. 다시, 도구를 사용 (또는 스크립트를 작성)에 단지 $ 이드에게 $`

2

아름답게 작동합니다. 그것을 위해 가라. .git 폴더를 svn으로 확인하지 마십시오.

편집 : erm, 내가 그것을 할 때, 나는 git-svn에 신경 쓰지 않는다. 난 그냥 svn에 대한 로컬 작업 디렉토리를 다른 디렉토리로 취급하고 이전 SVN 기록에별로 신경 쓰지 않는 경향이 있습니다.

+0

$Id .......crap.....$의 모든 인스턴스를 변환합니다, 나는 종류의 자식으로 이전 SVN 역사를 좀하고 싶습니다하지만 그것은 아니다 계약 위반. –

관련 문제