2009-02-02 7 views
7

여유 시간에 프로그래밍하려면 데스크톱과 랩톱이 있어야합니다 (두 맥 모두 의심 스럽지만). 필자는 두 가지 모두에서 VMware를 사용하여 Linux 이미지를 사용하여 코드를 실행합니다. 그것들은 동일한 이미지이기 때문에 두 곳에서 같은 환경을 가지고 있습니다.자신과 조정할 버전 제어

트릭은 내가 다른 사람과 코디네이트하지 않을 때도 모든 코딩에 버전 컨트롤을 사용하고 싶다는 것입니다. 내가 사용하고있는 시스템 중 가장 최신 버전의 코드를보고 싶습니다.

언제나 네트워크에 액세스하는 것에 의존하고 싶지 않습니다. Wi-Fi없이 어딘가에 코딩 할 수 있습니다 (예, 희귀하지만 일부 장소는 아직 석기 시대에 있습니다). git을 사용하고 있지만 저장소를 로컬에서 사용할 수있는 경우 SVN과 같은 기능을 제공합니다. 또는 랩톱이 SVN 서버가되고 데스크톱이 액세스합니다.

전에 이런 종류의 작업을 한 사람이 있습니까? 어떤 함정/함정/교훈을 배웠습니까?

답변

8

음, Subversion 대신 분산 시스템을 살펴 보는 것이 좋습니다. 이는 네트워크 액세스에 의존하지 말라는 귀하의 요구를 만족시킬 것이며 아마도 귀하의 워크 플로우에 더 잘 맞을 것입니다. 분산 형 VCS의 주요 선택 사항은 git, Mercurial ("hg"라고도 함) 및 Bazaar (또는 "bzr")입니다. 내 개인적인 취향은 Mercurial이지만 모두 비슷합니다.

그러나 Mercurial이 다른 것보다 가지고있는 한가지 (그리고 당신의 상황에서 매우 도움이 될 것입니다)는 "hg serve"명령입니다. 여기에서 그것에 대해 읽을 수 있습니다 : Informal sharing with "hg serve". 기본적으로 네트워크를 통해 저장소를 가져올 수있는 매우 간단한 (임시) 서버를 설정합니다. 내 데스크톱과 랩톱간에 코드를 동기화하기 위해 항상이 방법을 사용합니다. 랩톱에서 몇 가지 사항을 변경했다면 데스크톱에서 "hg serve"를 실행 한 다음 데스크톱에서 "hg pull"을 실행하거나 그 반대의 경우도 마찬가지입니다.

전체적으로 필자는 분산 시스템을 살펴 보는 것이 좋습니다. 사용자가 원하는 환경을 구축하는 것이 가장 좋습니다. 모든 정보를 웹에서 사용하면 상당한 양의 정보를 얻을 수 있습니다. 나는 다른 사람들과 많은 시간을 보냈지 만 Mercurial을 시도하고 싶다면 this free online book covers pretty much everything you'll need to get started.

+0

실제로 어떤 방식 으로든이 작업을 수행 한 유일한 사람인 것처럼 들립니다. 진정한 분산에 대한 나의 관심사는 컴퓨터를 앞뒤로 병합해야한다는 것입니다. 이는 병합을 잊어 버리는 방법입니다. 그것에 대한 어떤 마법의 수정? – edebill

+0

글쎄, 모든 VCS는 커밋/업데이트를 기억해야하므로 실제로 제거 할 수있는 것은 없습니다. 모든 DVCS 시스템을 병합하는 것은 매우 좋은 일이므로 어려운 작업으로 간주해서는 안됩니다. –

+0

어떤 이유에서든 별도의 컴퓨터에서 다른 코드로 변경 한 코드가 없으면 (예 : 메모리가 그보다 나은 경우가 아니라면) 병합 충돌이 없어야하며 모든 상호 작용이 필요없이 자동으로 병합됩니다. . –

7

항상 네트워크에 액세스 할 수 없으면 git를 강력히 추천합니다.

그러나 여전히 Subversion 저장소로 작업해야하는 경우에도 git-svn을 사용하여 두 가지 장점을 모두 활용할 수 있습니다.

+0

Git-svn 또는 gitub와 같은 오프 사이트 git 저장소 만 누르면됩니다. 랩톱 컴퓨터가 아닌 다른 곳에서 백업을하고 싶을 수도 있습니다. –

+0

나는 git-svn을 사용할 때 최선의 git을 얻지 못한다. 물론, git없이 svn을 사용하는 것보다 훨씬 낫습니다. – Dustin

2

무엇을 하든지 저장소가 정기적으로 백업되어 있는지 확인하십시오. 랩톱에 저장소가있는 경우 특히 그렇습니다. 노트북을 도난당한 경우 어떻게되는지 생각하고 싶을 것입니다. git을 사용하고 데스크탑에 저장소를 두는 것이 더 나을 수도 있습니다.

+0

분명히 오프 사이트에 백업했는지 확인할 수 있습니다. 아마도 iDisk와 자주 동기화하거나 정기적으로 데스크톱에 백업하는 cron 작업 일 것입니다. – edebill

+0

그것은 Mercurial의 아름다운 점입니다 ... 모든 컴퓨터는 저장소의 '복제본'을 가지고 있습니다. – Pete

0

SVN은 저장소에 액세스 할 수 없을 때 사용하기가 매우 어려워집니다. 한 대의 컴퓨터에서 모든 개발 작업을 수행하기 때문에 SVN에 대해서는 문제가 없지만 쉽게 찾을 수는 없습니다. 내가들은 바에 따르면, 그것은 git이 처리하도록 고안된 것과 정확히 같은 종류의 문제입니다. 로컬 복사본에 등록 된 커밋을 만들고 그 커밋을 액세스 할 때 저장소에 모두 업로드 할 수 있습니다.

0

당신은 SVN 호스트를 받고 고려할 수 - 그들은 매우 저렴하고 자신의 네트워크 연결을 처리 할 필요가 두통을 없애 : 망할 놈의 대안으로

http://www.google.com/search?hl=en&q=svn+hosting&btnG=Google+Search&aq=f&oq=

+0

또는 SVN을 기능으로 제공하는 일반적인 웹 호스트를 얻으십시오. – Kibbee

+0

불행히도, 즉각적인 네트워크 액세스없이 어딘가에서 일하고 있다면이 기능이 작동하지 않습니다. – edebill

1

, 이미하고있다 언급 한대로 Bazaar을 적극 권장합니다. git가 분산 된 VCS이지만 약간의 차이점이 있습니다.

(다소 편향된) 비교에 대해서는 this page을 확인하십시오.

+0

나는 이것을 두 번째 줄 것이다. Bazaar는 git보다 유용성에 대한 내 취향에 더 어울리지 만, 실제로는 씻기에 충분하다고 생각합니다. –

+0

@Darcy, 동의 함. 한 가지 주목할만한 차이점은 Windows 지원 (OP와 관련이없는 것 같음)에 대한 노력입니다. –

+0

아니요. 관련 없음. MacOS 지원과 Linux 지원이 필요합니다. Mercurial과 Bazaar (나는 이미 git를 시도했다)를 조사해야하는 것처럼 들린다. – edebill

1

간명 (설정) 후라면 SVN이 좋습니다. 모든 기록은 모든 동기화 된 PC에 보관되고 SVN + SSH는 설정할 수 없으므로 네트워크 연결없이 작동합니다. SSH의 기본 제공 기능을 사용하여 프로그램을 실행하므로 SSH 서버를 설정 한 경우 저장소 만 만들면 모든 것이 작동합니다. 서버 설정이 필요 없습니다.

동기화 할 모든 컴퓨터에 전체 저장소가 있으므로 백업으로 사용할 수도 있습니다.

분산 버전 제어 시스템 또한 흥미 롭습니다.하지만 선행 투자는 더 높다고 생각하지만, 연결하지 않고 저장소에 저장할 수 있다는 장점이 있습니다 (단독으로는 너무 중요하지 않지만 체크 포인트 및 롤백 어디서나 장점을 가질 수 있습니다).

+0

그 단순함은 랩톱에서 SVN 저장소를 실행하는 것이 유혹을 일으키는 이유 중 일부였습니다. 나는 항상 지역에 있거나 노트북을 사용할 수있게 보장했기 때문에 결코 문제가되지 않을 것입니다. 단지 1 개의 repo가있어서 나는 나 자신과 합병 할 필요가 없을 것입니다. – edebill

+0

SVK를 사용해보십시오. 거의 간단하지만 항상 로컬 저장소가 있다고 들었습니다. 아무 직접 경험도. –

0

내가 좋아하는 VCS는 패치 체리 피킹을 지원하므로 darcs입니다. 그것은 분산 형 VCS이며 매우 사용하기 쉽습니다.

+0

git와 mercurial은 체리 피킹에도 탁월한 지원을합니다.:) – Dustin

+0

하지만 아는 한 git 및 hg에서는 불가능합니다. repo A에는 패치 1, 2, 3 및 4가 포함되어 있습니다. repo B는 패치 1, 5, 6을 포함합니다. repo C는 아무것도 포함하지 않습니다. darcs를 사용하면 이제 A에서 패치 1, 2, 4를 B에서 가져올 수 있습니다. C는 이제 1,2,4,6을 포함하고 A와 B는 변경되지 않습니다. –

+0

아, 또 하나의 중요한 추가 사항 : 나중에 패치를 풀 수 있습니다. 이제는 마지막 패치입니다. darcs에는 버전이 없습니다. –