2014-04-16 3 views
0

내 요구 사항을 설명하는 것이 쉽지 않으므로 세 가지 키워드로 설명 할 수없는 사항에 대해서는 Google에 알기 어렵습니다.동일한 서버에있는 SVN 개발 및 프로덕션 버전

그래서 내가 필요한 것은 무엇입니까? 내 고객 홈페이지가있는 Ubuntu 12.04 서버가 있습니다. 그들은 많은 업그레이드를 요구하므로 내 개발 서버에서 클라이언트 서버로 파일을 복사하기가 어렵습니다.

그래서 때 (같은 서버에 다른 폴더) client.com에서 앉아 것입니다 생산 버전 - 개발 버전 dev.client.com 아래에 앉을 - 이 : 나는 클라이언트 서버에 SVN을 설치하고자 나는 무언가를 개발하고 있는데, 변경된 내용은 제한된 영역 (dev.client.com)에서 볼 수 있습니다. 하지만 내가 커밋하기 전까지는 client.com에 나타나지 않습니다.

알다시피, SVN은 보통 로컬 컴퓨터에서 작동하지만 개발 버전이 내 로컬 컴퓨터에 남아 있도록하고 싶지 않습니다.

내 요구 사항을 이해하면 저를 도울 수 있거나 유용한 방향을 보여 주실 수 있습니까? :)

+0

힘내거나 SVN ??? 내가 아무 것도 쓸모없이 시간을 할애하기 전에 선택하십시오. –

+0

주의 깊게 읽고주의를 기울이십시오. – LokoTerrorita

답변

2

태그 목록에 git을 언급 했으므로 svn :) 대신 사용 하시길 바랍니다. 그래서 나는 다음과 같은 작업 흐름을 제안 할 것이다.

첫 번째 영역은 개발을 수행하는 컴퓨터 (또는 컴퓨터)입니다. 그것은 당신 자신의 놀이터이고 당신은 당신이 원하는 어떤 것도 자유롭게 할 수 있습니다. 또한 제품의 개발 설치 (호스팅 또는 기타의 폴더)가 있습니다. 고객이 "베타 버전"을 평가하는 곳입니다. 세 번째 엔티티는 프로덕션 코드입니다 (다시 말하면 호스팅의 폴더 또는 기타).

먼저 컴퓨터에 [private] git - 저장소를 만듭니다. 또한 호스트에 dev.client.comclient.com (또는 "베타"및 "프로덕션"영역이 다른 호스트에있는 경우 두 개의 리포지토리)에 프로젝트를 게시하기 위해 "베어"저장소를 만들어야합니다. 이에 대해서는 git init --bare을 사용하십시오.

그런 다음 일반적으로 코드를 depelop합니다. 파일을 변경하고, 커밋하고, 수정하고, 기록에서 앞뒤로 이동하는 등 자유롭게 변경할 수 있습니다. 변경 사항을 기억하지 마십시오 .-- 로컬에 저장되므로 걱정하지 마십시오.)

게시자가 dev.client.com에 게시할만한 가치가 있다고 생각할 때마다 적절한 커밋을 선택하고 tag 예를 들어 beta/v1.2.3.1234. 생산 영역에 게시할만한 가치가 있다고 생각한다면 tag 예를 들어 rel/v1.2.3. 그런 다음 호스트 저장소 (또는 리포지토리)에 push 개의 필수 태그를 지정합니다.

이제 변경 사항이 있지만 여전히 파일 시스템에서는 볼 수없는 저장소에 "압축"되어 있습니다. check out이 필요합니다.

당신은 단순히 호스팅에 로그인하여 수동으로 같은 명령을 실행할 수 있습니다 :

cd /path/to/dev.client.com/dir/ 
GIT_DIR=/path/to/repository GIT_WORK_DIR=. git checkout beta/v1.2.3.1234 
cd /path/to/client.com/dir/ 
GIT_DIR=/path/to/repository GIT_WORK_DIR=. git checkout rel/v1.2.3 

이러한 단계를 자동화 할 수 있습니다. 누군가가 커밋과 참조를 푸시 할 때마다 호스팅 사이트에서 실행되는 post-receive git hook이 있습니다.

+0

와우. 고마워요 :) – LokoTerrorita

관련 문제