2010-06-19 2 views
0

마침내 버전 관리 워크 플로로 이동하기로 결정했지만 ... SVN을 사용하여 워크 플로를 설정하려고 한 달이되었습니다.Subversion이 신원 확인 되었습니까?

저는 Coda (svn은 지원) + Media Temple 호스팅과 함께 작업합니다. /data/svn/myproject에 repo (MT 가이드에 따라)를 설정하고 내 웹 사이트 루트를 가져 왔습니다.

문제 1 : svn은 디렉토리가 아닌 루트에있는 파일의 절반 만 가져 왔습니다.

다음 나는 (튜토리얼을 따라) 코다에서 체크 아웃을 시도했다.

문제 2 : 오류 (로컬 dir이 작업 복사본이 아닙니다)가 발생하고 .svn 폴더 만 만들어졌습니다.

지금 버전 관리 시스템이 어떻게 작동하는지 전혀 이해하지 못했다고 생각합니다. 나에게 분명히해라. 내가 처음으로 파일을 체크 아웃하면 내 원격 디렉터리에서 내 로컬 폴더로 복사 될 것이다. FTP 및 버전 확인은 두 개의 분리 된 작업으로 유지됩니까? 의미 : Coda에서 파일을 커밋 할 때 자동으로 원격 웹 사이트 디렉토리에 이전 파일을 업데이트 할 예정입니까? 그리고 그것은 단지 코드에 관한 것이거나 모든 것이 버전 제어하에있게됩니다 (이미지, 등등 ...)?

미안 내가 묻기 전에 많은 가이드를 읽었지만, 나는 그것을 얻지 못한다! 모든

+0

누가 수퍼 유저로 이동 했습니까? O_o –

답변

3

첫째, 나는 당신을 조언 것

덕분에 당신의 IDE에서 별도 것 같은 버전 관리 생각합니다. 어쨌든 파일 시스템 수준에서 작동하며, 코다가 제공하는 통합 기능이 무엇이든 그 개념을 추상화 한 것입니다. 처음에는 Coda를 방정식에서 벗어나면 더 쉽게 이해할 수 있습니다.

저는 개인적으로 명령 줄을 싫어합니다. 물론 강력하지만 (물론 강력합니다) Windows에 있다면 거북이를 구하고 주위에서 놀라고 조언합니다. . Mac에서는 모르겠지만. 아마도 Mac에서도 SVN을위한 훌륭한 그래픽 도구가있을 것입니다.

기본적으로 SVN 워크 플로는 리포지토리와 로컬 폴더의 두 가지로 구성됩니다. 저장소는 서버와 같습니다. 그것은 모든 것을위한 중심 위치입니다. "스마트 FTP 폴더"처럼 생각하십시오.

워크 플로는 다음과 같습니다. 모든 소스 코드와 내용을 로컬 폴더에 씁니다. 작업이 완료되었다고 생각하면 중앙 폴더 (저장소)에 복사 한 후 다음 작업을 시작하십시오. 작업이 끝나면 다시 중앙 폴더로 복사하십시오. 등등. 이 작업은 "커밋"입니다. 중앙 폴더에 로컬 파일을 복사하고 거기에 있던 파일을 덮어 씁니다.

글쎄, 실제로는 단순히 복사하는 것보다 "똑똑한"것입니다. SVN은 모든 변경 사항을 추적하므로 로컬에서 파일을 삭제할 때 커밋은 서버의 파일도 삭제합니다. 마치 서버 폴더를 로컬 폴더와 똑같이 보이게 만드는 것과 같습니다.

이제 버전 관리의 주요 판매 지점은 이러한 저장소의 모든 업데이트가 비파괴 적이라는 것입니다. 즉, 가장 최근의 내용을 저장소로 복사하면 이전 파일을 보관하고 언제든지 다시 가져올 수 있습니다. SVN 저장소에서 실제로 뭔가를 삭제하는 것은 실제로 매우 어렵습니다. 그래서 단일 개발자도 소스 컨트롤을 선호하는 경향이 있습니다. 백업 시스템과 같아요. 엉망진창이라면 항상 이전 버전을 가져 와서 다시 시작할 수 있습니다. 아무것도 잃어 버리지 않는다. 그리고 그것은 매우 효율적으로 이루어졌습니다.

간단한 FTP 폴더에 비해 SVN의 다른 주요 이점은 여러 사용자가 동일한 파일을 변경하는 경우입니다. 그것은 사물을 추적하므로, 당신과 당신의 친구가 모두 같은 파일을 수정하면, 커밋시 경고합니다. 가장 자주 SVN이 자동으로 변경 사항을 병합 할 수 있지만 때로는 손으로 물건을 정렬해야합니다. 하지만 다시 말하자면 누군가 수정 한 파일을 덮어 쓴 사람이있어서 우연히 변경 내용을 잃을 수 있습니다. 역사는 그것을 모두 지키고, 같은 파일을 덮어 쓰 자마자 큰 뚱뚱한 경고와 물건을 얻습니다.

그래서, 워크 플로우 ...

글쎄, 그것은이처럼 대부분의 시간 :

  1. 당신은 당신의 저장소를 설정합니다. 빈 폴더와 같이 처음에는 비어 있습니다.
  2. 그런 다음 빈 폴더를 로컬 폴더의 "어딘가에"체크 아웃합니다. 안전을 위해 빈 폴더를 새로 고르십시오. 이것은 무의미하지만 로컬 폴더와 저장소 사이에 링크를 설정합니다. 즉, 작은 .svn 폴더가 생성됩니다 (이 작은 폴더는 그대로두고 무시해야합니다). 이제부터는 SVN이이 로컬 폴더가 저장소 폴더를 미러링하고 해당 저장소 폴더에 커밋한다는 것을 알게됩니다.
  3. 이제 모든 항목을 새 빈 폴더에 복사합니다.
  4. SVN에 "모든 파일 추가"라고 말하십시오. 그러면 모든 파일이 다음에 커밋 할 때 저장소에 복사해야하는 새로운 추가로 표시됩니다. 이제 일반적으로 서버에 복사하지 않을 파일이 있습니다. 거기에는 무엇을 포함하고 무엇을하지 않는가는 당신에게 달려 있지만 일반적으로 프로그램 소스와 관련된 모든 것들 (이미지와 같은 리소스 포함)은 복사되고 IDE에서 자동으로 다시 생성 된 로컬 파일은 그대로 남습니다 아웃. 이 방법으로 생각하십시오 - 다른 사람이 당신과 합류하기를 원할 때, 그는 저장소에서 모든 파일을 가져갈 것입니다. 어떤 사람이 그 사람과 관련이 있으며 어느 사람을 삭제하겠습니까? SVN에는 "ignore"라는 기능이있어서 나중에 불필요한 파일에 대해 묻지 않습니다.
  5. 그런 다음 커밋하십시오. 그러면 파일이 서버로 복사되고 폴더가 채워집니다.
  6. 그런 다음 다음 기능에 대한 작업을 시작하십시오. 당신이 끝나면, 커밋. 다음 기능을 시작하십시오. 등. 실제로, 당신이 그것 같이 느낄 때마다 당신은 저 지르지 않으면 안됩니다. 엄지의 규칙은 다음과 같습니다. - 서버 복사본을 정상 상태로 유지합니다. 컴파일되지 않거나, 프로그램의 절반을 비 작동 상태로 만드는 지저분한 재 작성의 중간에 커밋하지 마십시오. 완성 된 것들을 저 지르십시오.

꽤 많이 있습니다. 당신이 당신의 친구와 함께 일한다면, 당신은 또한 "Update"를 할 것입니다. 그러면 친구가 커밋 한 변경 사항이 로컬 폴더에 복사됩니다.

SVN의 다른 유용한 기능이 있지만 기본 설정입니다. 이 문제에 익숙해지면 더 많은 것을 찾아보십시오.

+0

당신은 내 영웅입니다. 정말 복잡한 방법으로 복잡한 작업을 설명해 주셔서 감사합니다. 이것은 올바른 방법으로 나를 시작하게 할 것입니다. 한 가지만 분명하지 않습니다. I.E. 내 블로그 루트 폴더 "/home/XXXXX/domains/domain.com/html"을 버전 제어하고 싶습니다. 내 리포지토리 폴더 여야합니다. 또는 다른 폴더를 만든 다음 svn을 사용하여 가져 오기 (또는 로컬로 다운로드 한 다음 처음으로 커밋)해야합니까? 더 적은 단어로 : 리포지토리 폴더 (서버에 있음)가 파일을 저장하는 데 사용중인 ftp 폴더와 같아야합니다. – Andycap

+0

다시 한번 감사의 말을 전하고 싶습니다. 마침내 시험을 치러야합니다.나는 FTP를 대체하는 SVN을 생각하면서 혼란 스러웠다. – Andycap

+0

@Andycap - 아니요, 저장소는 실제 폴더가 아닙니다. 그것은 마치 DB와 같습니다. 귀하의 SVN 클라이언트를 통해 그것을 사용하면 폴더처럼 보이지만 실제로 거기에 많은 마법이 있습니다. SVN 클라이언트/서버 설명서를 읽고 빈 저장소를 새로 만드는 방법을 확인하십시오. –