어떻게 여러 서버에 코드를 푸시 할 수 있습니까? 우리는 동일한 코드 사본을 가져야하는 많은 서버를 보유하고 있습니다. 개별 서버로 푸시하기가 어렵습니다. 나는 수은이 갈고리를 가지고 있지만 그들 중 누구도 적절한 해결책을 제공하지 않는다는 것을 안다.Mercurial을 사용하여 코드를 여러 서버에 푸시하는 방법은 무엇입니까?
답변
: 다음
[paths]
default = http://server1
server2 = http://server2
그리고는 해. 그게 문제가 될해서는 안,
[paths]
server2=http://server2
server3=http://server3
[hooks]
changegroup.server2 = hg push -f server2
changegroup.server3 = hg push -f server3
당신은 동일한 이벤트에 대해 여러 후크를 가질 수 있습니다
그래서 중앙 서버는 다음 hgrc있을 것입니다.
변경 집합 훅에 비해 변경 그룹 훅의 장점은 훨씬 덜 자주 실행된다는 것입니다.
.hg/hgrc
파일에는 기본 위치가 포함 된 [paths]
지시문이 있어야합니다. 같은 것을 추가하는 방법에 대한 무엇 : 당신이 changegroup 훅을 만들고, 중앙 서버에서
hg push default
hg push server2
으로 남겨 두었습니다. 나는이 솔루션을 알고, 내가 원하는 것은 후크 또는 서버 1로 성공적으로 푸시 할 때 서버 2로 푸시되는 트리거를 자동으로 시작하는 트리거입니다. 위의 솔루션은 항상 하나의 서버로 푸는 것을 잊어 버릴 기회를 가지고 있습니다. 그건 그렇고, 빠른 답장을 보내 주셔서 감사합니다. – Akshay
나는 자동 푸시 체인 문제에 직면 해있다. 그것은 해결 되든 안되나요? –
서버 중 하나가 마스터 저장소이고 나머지가 배포 된 것으로 가정합니다. 그런 상황에서 나는 주인과 만 상호 작용하고 배치를 cron :
cat >$HOME/bin/dist <<'EOM'
#!/bin/sh
cd ${1:?}
tip=$(hg tip --template '{node}')
for r in $remotes; do
hg push -r $tip $r
done
EOM
chmod +x $HOME/bin/dist
(crontab -l; echo '*/5 * * * * $HOME/bin/dist /var/repos/master') | crontab -
허 .. 만약 커밋이 5 백만 분의 1 이하로 밀린다면 어떻게 되겠습니까? :-). 이 경우 "변경 그룹"훅을 설정하는 것이 좋습니다. 또한 변경 집합이 분기를 만들 때 -f 옵션 (강제)을 사용하여 밀어 넣어야합니다. 내 충고, 당신이 cron 대신에 cron을 사용하고 싶다면 정기적으로 변경을 가하는 원격 머신에 설정하는 것이 좋을 것입니다 :이 방법은 하나 이상의 changeset이 풀릴 수 있습니다. 예를 들어), pull에는 -f 옵션이 필요 없습니다. 그냥 내 0.02 €. 건배, 크리스토프. –
의 솔루션이 정상적으로 작동합니다. '밀어 넣기'는 '팁'과 모든 조상을 푸시하므로 모든 것을 얻을 수 있습니다. 불필요한 코드가 많이 있지만, 템플릿을 사용하여 템플릿을 배우는 대신에 'tip'이라는 이름을 사용할 수 있습니다 (-r은 이름이 잘 걸립니다). -r param을 모두 건너 뛰고 'push'하면됩니다. 기본값은 팁입니다. 어떤 지점에서 새로운 브랜치와 새 머리를 밀어 넣어야 할 수도 있고 스크립트가 실패하지 않기를 바랄 수도 있기 때문에 아마도 push -f를 원할 것입니다. –
@ ry4an : 스크립트가 server1에서 server3로 도착하기 전에 다른 변경 세트를 가리킬 수 있으므로'tip' 이름을 사용할 수 없습니다.그저'-r'을 생략 할 수없는 이유 일뿐입니다. 모든 푸시 후에 모든 미러가 동일한 팁을 가지게하려면 전체 스크립트에 대해 동일한 수정을 고수해야합니다. 그러나'-f' 주석은 유효합니다. –
- 1. Mercurial을 통해 코드 배포를 수행하는 방법은 무엇입니까?
- 2. 뷰 iphone을 푸시하는 방법은 무엇입니까?
- 3. Mercurial을 사용하여 Umbraco 설정하기
- 4. ABPeoplePickerNavigationController를 푸시하는 방법은 무엇입니까?
- 5. 포스트 백에서 서버에 자바 스크립트 값을 푸시하는 방법은 무엇입니까?
- 6. 셧다운없이 Apache 서버에 업데이트를 푸시하는 가장 효율적인 방법은 무엇입니까?
- 7. cloud9에서 github을 푸시하는 방법은 무엇입니까?
- 8. jQuery - Ajax를 통해 JSON을 푸시하는 방법은 무엇입니까?
- 9. 동일한 기계에서 여러 계정을 사용하여 여러 Git 리포지토리에 푸시하는 방법은 무엇입니까?
- 10. 어떻게 Mercurial을 사용하여 Python
- 11. 여러 클라이언트를 서버에 연결하는 좋은 방법은 무엇입니까?
- 12. 여러 방화벽이있는 원격 서버에 ssh하는 방법은 무엇입니까?
- 13. Mercurial을 사용하여 업스트림 변경 사항을 포크로 가져 오는 방법은 무엇입니까?
- 14. Mercurial을 사용하여 Django 응용 프로그램을 배포하는 방법은 무엇입니까?
- 15. SVN을 로컬에서 사용하고 변경 사항을 원격 Git 서버에 푸시하는 방법은 무엇입니까?
- 16. textFieldDidBeginEditing 이벤트를 사용하여보기를 푸시하는 방법은 무엇입니까?
- 17. 데이터를 .NET CF 클라이언트로 푸시하는 방법은 무엇입니까?
- 18. 데이터를 iPhone 앱으로 푸시하는 방법은 무엇입니까?
- 19. iPhone에서 픽셀을 더 빠르게 푸시하는 방법은 무엇입니까?
- 20. viewcontroller (뷰 컨트롤러)를 푸시하는 방법은 무엇입니까?
- 21. 뷰를 기존 표 셀로 푸시하는 방법은 무엇입니까?
- 22. 자바 코드를 사용하여 SHOUTCAST 서버에 연결하는 방법
- 23. 기존 SAP 시스템에서 데이터를 가져 오거나 푸시하는 방법은 무엇입니까?
- 24. 해시 코드를 사용하여 터치를 참조하는 방법은 무엇입니까?
- 25. 서버에 요청하는 방법은 무엇입니까?
- 26. 스크립트를 기반으로 Mercurial 서버에 푸시하는 것을 거부하려면 어떻게해야합니까?
- 27. 웹 서버에 Mercurial을 설정하는 데 약간의 혼란이 있습니다.
- 28. AJAX를 사용하여 서버에 여러 번 요청 하시겠습니까?
- 29. 변수를 사용하여 Sass 코드를 마르는 방법은 무엇입니까?
- 30. QT를 사용하여 병렬 코드를 실행하는 방법은 무엇입니까?
이것은 서버 1로 푸시가 성공한 경우에만 트리거되기 때문에 가장 적합한 솔루션입니다. branchy 히스토리를 가지고 작업하고 있다면, 그 changegroup 훅 라인에 'push -f'가 필요할 것입니다. –
-f 옵션이 추가되었습니다. –
코드를 편집하려면 코드가 작동해야합니다. Mercurial을 사용하면 [이벤트 당 여러 작업 수행] ** (http://hgbook.red-bean.com/read/handling-repository-events-with-hooks.html) **의 끝에 ** 확장 기능을 추가 할 수 있습니다. 후크의 이름. 후크의 이름을 지정하고 후크의 이름 ("."문자)을 입력하고 원하는 텍스트를 추가하여 후크의 이름을 확장합니다. 예를 들어, Mercurial은 commit 이벤트가 발생할 때 commit.foo와 commit.bar를 모두 실행합니다. –