2014-03-27 2 views
0

저는 신참한데 도움이 필요합니다. 내 계획 :웹 서버에 Stash를 사용하고 다른 저장소의 파일을 추가하여 포크로 작성

  1. 나는 DEBS는
  2. 내가
  3. 수정 이름과 directorys와 문서 저장소에서
  4. 다음을 파일을 추가 WWW 폴더에 DEBS에서 포크를 문서 저장소를 원하는 내가 한 리포지토리 한 I debs 폴더와 수정 된 docs 폴더를 www 폴더로 병합하고 싶습니다.
  5. 웹 서버에서 나는 cron이 자동으로 www 폴더를 풀어서 deb 저장소를 업데이트하려고합니다.

Atlassian Stash를 사용합니다. debs에서 www 폴더로 이동할 수있는 방법이 있습니다. 그리고 debs 디렉토리의 내용을 변경하면 www 폴더에 자동으로 변경 사항이 적용됩니다. 사실입니까?

나는 자동으로 부품 4. 5. 및 6.

무엇을 할 수있는 가장 좋은 방법이 될 것 할 것입니다 스크립트를 만들고 싶어?

+0

아니요, 아무 것도 자동으로 푸시되지 않습니다. 'git add'를 사용하여 변경된 파일을 추가 한 다음'git commit'을 사용하여 변경 한 파일을 커밋해야합니다. –

+0

당신은 어떤 서버입니까? Stash는 Windows, osx에서 사용할 수 있으므로 Linux의 일부 기능을 사용하고 있는지 확실하지 않습니다. –

답변

1

1) 나는 DEBS 저장소가

전체 풀 프로세스가에 자동화 할 수 있도록이, [email protected]:user/debs.git

우리는 ssh URL을 사용하고 있습니다에의이 URL을 가정 해 봅시다 있습니다 섬기는 사람. ssh-keyshttps 연결을 통해 매번 제공해야하는 username-password과 달리 git으로 독자적으로 선택할 수 있으며 ssh 키는 비밀번호 캐싱보다 설정하기가 훨씬 쉽습니다.

여기에 ssh 키가 이미 설정되어 있다고 가정합니다. 동일한 게시물을 보려면 bitbucketgithub에 대한 게시물을 확인하십시오.

2) 내가 저장소 문서를

은의이의 URL이 [email protected]:user/docs.git

3) 내가 www 폴더에 DEBS에서 포크를 원하는 가정합시다

이 꾸짖 음 d 간단합니다 - www 위치로 가서 git clone을 사용하여 로컬 사본을 만드십시오.

cd www 
git clone [email protected]:user/docs.git 

FWIW, forking 여기에 올바른 용어 아니다, 그것은 단지 하나 개의 사용자 계정에서 다른의 bitbucket, GitHub의 등의 REPO의 복사본을 생성에 관련이 있습니다.

이 복제본을 www, 즉모든 코드는 www direcotry 내에 배치하고,하지 www/debs 디렉토리 내에서)

cd path_to_www_parent 
git clone [email protected]:user/docs.git www 

4 사용 수정 이름과 directorys

당신이 필요로하는 경우에 문서 저장소에서 파일을 추가합니다 파일 이름을 매번 변경하려면 debs를 일부 위치에 복제하고 파일의 이름을 바꾼 다음 이동하는 것이 좋습니다. 파일의 이름과 디렉토리 경로는 자식의 repo에서와 같은 경우

그렇지 않으면, 당신은 직접 debs 저장소 내에서 git submodule로 문서 저장소를 추가하거나 내에서 subtree로 할 수 있습니다.

git 리포지토리가 코드의 작업 복사본이되도록 파일 이름 등을 동일하게 유지하는 것이 좋습니다. 그런 식으로 서브 모듈로 직접 사용될 수 있으므로 파일 이름 바꾸기 스크립트에 대해 걱정할 필요가 없습니다.

5) 그럼 폴더 및 수정 된 문서 우리는 이미이가 될하려면 위의 단계에서 이상적인 방법을 그 처리했다

WWW 폴더에 폴더 DEBS에서 병합 할 귀하의 경우에 수동으로 코드를 가지고 놀지 않고 다음과 같은 구조를가집니다. 난 당신이 위의 방식으로 모듈을, 간단한 자식 풀은 것입니다 추가하면 뎁 저장소

를 업데이트 할 크론 자동으로 www가 폴더를 끌어 할 webserver에서

debs #can be the www folder as well 
|_code_file_for_debs_1 
|_code_file_for_debs_2 
|_code_file_for_debs_3 
. 
. 
|_docs #is a git submodule 

6) 그들을 업데이트하십시오. 크론 작업이

cd www 
git pull 
service apache2 graceful #assuming apache is webserver 

을 다음과 같이 간단한 스크립트를 수 그리고 이것은 다음과 같은 매 15 분 (오픈의 crontab은 crontab -e를 사용하여) 작업

*/15 * * * * sh script.sh 

또는

*/15 * * * * cd www && git pull && service apache2 graceful 
으로 예약 할 수 있습니다

나는 lassian Stash, 나는 debs 폴더에서 www 폴더로 이동할 수있는 방법이 있다는 것을 알고 있습니다. debs 디렉토리의 내용을 변경하면 자동으로 변경 사항을 www 폴더로 푸시합니다. 사실입니까?

아니요, 아무 것도 자동으로 푸시되지 않습니다. git add을 사용하여 변경된 파일을 추가 한 다음 커밋 한 다음 bitbucket/github 저장소로 밀어 넣어야합니다. 서버에 베어 레포를 설치하고 밀어 넣기 시작할 수 있지만 위의 다른 단계는 변경되지 않습니다. bare repos 설정에 대한 이해를 높이려면 다른 question here에 대한 내 대답을 확인하십시오.이 설정이 작동해야하지만


PS, 당신은 당신을 위해 동일한 기능을 수행 할 cron 작업에 완전히 의존하는 대신 배포 capistrano 또는 다른 도구를 사용하여 조사해야합니다. cap 스크립트의 이점은 배포를 수행해야 할 때만 실행하면되므로 서버가 CPU주기를 낭비하지 않습니다. 동시에 여러 서버에 배포 할 수 있습니다. git pull 등의 문제로 쉽게 해결할 수 있습니다.

관련 문제