2009-07-03 5 views
51

Subversion : 로컬 리비전을 밀어 넣지 않고 커밋하고 나중에 밀어 넣을 수 있습니까? 아니면이 기능이 부족하여 "중앙화 된"이유가 무엇입니까?svn : local 커밋

+11

Git을 사용하십시오. 기능이 있습니다 – nightingale2k1

답변

48

Subversion으로 로컬 커밋을 수행 할 수 없습니다.

이것은 중앙 집중식 버전 제어 시스템으로 인해 로컬 작업 복사본에 서버가 이전 버전, 로그 항목 등에 대해 가지고있는 정보가 모두 포함되어 있지 않기 때문입니다. 분산 버전 제어 시스템 (DVCS).

Subversion 작업 복사본에는 체크 아웃 된 모든 파일의 복사본이 포함되어 있으므로 서버에 연결하지 않고 변경된 파일을 되돌릴 수 있습니다.

로컬 커밋을 실제로 수행하려면 Subversion 위에 구축되어 DVCS와 유사한 기능을 제공하는 SVK을 살펴 봐야합니다.

+0

SVK에 대한 경험이 있습니까? 나는 그것을 조금 사용했고 괜찮아 보였지만, 나는 더 이상 부드러운 svn 사용에 대한 믿음이별로 없다. 나는 그것의 위에 지어지는 무엇이라도 단지 흔들 거리는 것과 같을 것이다라고 생각할 것이다. – jskulski

+2

@jskulski : SVK에 대한 경험이 없지만 "antiFUD"페이지에서 질문에 답합니다. http://svk.bestpractical.com/view/SVKAntiFUD – Catskul

+1

이 대답은 약간 오해의 소지가 있습니다. SVN이 중앙 커밋되어 로컬 커밋이 불가능하기 때문이 아닙니다. 단순히 생략 된 구현 세부 사항입니다. 로컬 커밋을 repo에 배치 푸시 할 수있는 변경 집합의 큐로 처리하는 것은 기술적으로 가능합니다 (svk가이를 보여줍니다) - SVN이 사용하기가 더 어려워지는 지점으로 UX를 변경합니다 (표준 워크 플로 사용). SVN은 기능이 아니라 사용의 편의성을 최적화하기로 선택합니다. 하지만 아무 것도 깨뜨리지 않고 Subversion에 해킹 당할 수 있습니다. –

1

그래서 중앙 집중식이라고합니다. 레포 내부에서 레포를 사용해 볼 수도 있습니다. 하나는 로컬이고 다른 하나는 원격입니다. 그런 다음 내부 저장소 전체를 원격지로 커밋합니다.

4

SVN 서버와 GIT 또는 Mercurial Bridge를 연결하면 그렇게 할 수 있습니다. GIT와 Mercurial은 로컬 커밋을 수행 할 수 있기 때문에 그런 식으로 사용할 수 있습니다. 어쩌면 자식 - svn 또는 뭔가 similiar 체크 아웃 (나는 거기에 바자 - svn 있지만 확실하지 기억).

+3

이 변형은 SVN 작업 복사본에서 'git init'을 사용하는 것입니다. 로컬 커밋을 오프라인으로 설정하십시오. 나중에 SVN에 최종 상태 (또는 중간 상태)를 커밋합니다. 이 후 .git 디렉토리를 삭제할 수도 있습니다. 이것은 작업 복사본이 git-repo가 ​​아닌 SVN 작업 복사본으로 유지된다는 것을 의미합니다. – fmarc

0

아니요! git하지만이 작업을 수행 할 수 있으며 git-svn을 사용하여 을 원래 저장소와 동기화 할 수 있습니다.

0

하는 두 세계의 최고 얻으려면, SVK

1

다른 사람이 아니, 말했듯이 ... 서브 버전의 상단,하지만 로컬 커밋을 할 수 있도록 지역의 상태를 유지 관리에 지어졌습니다.

내가 은 원격으로 janky를 svn과 함께 사용하는 것이 좋습니다.

필자는 SVK를 사용하지 않았지만 충분히 좋았습니다. 그러나 나는 SVN의 최상위에 구축 된 것을 프로젝트 전체에 사용하는 것에 회의적이다. 나는 SVN을 충분히 사용하여 조심하지 않으면 정기적 인 작업주기라도 토스트 할 수 있음을 알고있다.

직장에서 SVN을 사용합니다. 나는 bzr 및 bzr-svn을 사용하여 모든 상호 작용을 수행했으며 은 멋지게입니다.내 워크 플로우는 뭔가 같은 :

$ bzr branch file:///var/svn/project ~/project

(해킹, 해킹, 해킹)

$ bzr commit -m "commit log" (반복)

내가 준비가

$ bzr push

예, 설치 당신이 $ bzr merge이 변경을 커밋 업데이트 EAD도있다 (아마도 당신이 작업하는 것을 선반)하지만 지역 커밋이 매우 좋은 점, 그리고 을 선반 (등으로을 되돌릴 수있다 쉘빙 저장)

나는 이것을 잘 처리한다고 생각한다. 나는 그것이 bzr-svn만큼 완벽하지 않다고 들었지만, 나는 그것을 확증 할 수 없다.

하지만 svn 저장소가있는 DVCS를 사용하는 것은 좋은 방법입니다! (

패키지 "자식-SVN을"사용을 고려 :

28

위의 대부분은 한물되고,이 질문은 여기 "SVN 지역 커밋"에 대한 구글 검색에서 히트로 등장하기 때문에 업데이 트입니다했다 "git-gui"와 함께 git을 모르는 경우) 완전한 원격 SVN 통합으로 로컬 커밋을 가능하고 쉽게 만들 수 있습니다. 알맞은 개요/튜토리얼/사용 사례는 here입니다. Sourceforge 프로젝트에서이 프로세스를 사용하기 시작 했으므로 아직 어떤 문제도보고 할 수 없습니다. 작성자 파일을 올바르게 가져 오십시오!

편집 : 링크가 업데이트되었습니다. 고마워, HDL!

+0

+1 - 여분의 중복에 대해. 나는 SVN이 지역 커밋을 소개 할 것이라는 것을 어느 곳에서나 읽었다 고 생각한다. – Seth

+0

링크가 작동하지 않습니다. – thirtythreeforty

+1

@thirtythreeforty : Archive.org에는 웹 페이지 사본이 있습니다. https://web.archive.org/web/20130924234957/http://utsl.gen.nz/talks/git-svn/intro.html – newenglander

1

BobC의 답변에 더해서 수은의 경우 hgsubversion을 사용합니다.