2011-02-04 2 views
2

배경 : http를 통해 제공되는 원격 SCM 시스템과의 기본적인 상호 작용을 수행해야하는 Java 서버 응용 프로그램을 작성하고 있습니다.원격 Mercurial 및 Git http 저장소와 상호 작용

미리 정의 된 API를 사용하여 Mercurial 및 Git 저장소와 상호 작용할 수 있습니까? (또는 http를 통해 제공되는 경우 이러한 저장소가 어떻게 배치되는지에 대한 규칙이있는 경우) 복제 할 필요없이 서버에서 상호 작용할 수 있습니까? 필요한 유일한 상호 작용은 현재 버전 제어하에있는 파일 목록과 버전 제어 파일의 특정 버전을 다운로드 할 수있는 기능입니다.

EDIT : Mercurial의 경우 Ry4an의 솔루션을 사용했습니다. 힘내 들어, 나는 gitweb를 사용하여 제공되는 저장소의 화면을 긁어 낸다.

답변

4

Mercurial은 복제, 밀어 넣기 및 끌어 오기를 제외하고는 원격 저장소에서 작동하도록 설계되지 않았습니다. 즉, 제공되는 방식에 따라 할 수있는 일이 많습니다. hgweb를 통해 제공되는 경우, 웹 인터페이스는 hg serve으로 제공되며, 프로그래밍 방식으로 쉽게 처리 할 수있는 많은 세부 정보가 style=raw 개 있습니다. 몇 가지 예 : 그와

당신이 파일을 검색 할 수 있으며, 개정 , 태그 및 분기.

그러나 작성하려는 경우 자이 썬에서 Java 애플리케이션으로 Mercurial을 실행하고 명령을 직접 실행하는 것이 가장 좋습니다.

+0

감사합니다. gitweb과 비슷한 원시 출력 형식이 있는지 알고 있습니까? – dteoh

+0

나는 전혀 모른다. :) –

2

Mercurial에는 2 개의 웹 API가 있습니다. 아마 당신은 사용해서는 안됩니다. 그것은 Mercurial의 다른 인스턴스가 변경 집합을 보내고받는 데 사용하도록 설계되었습니다.

다른 하나는 일반 웹 브라우저를 통해 쉽게 액세스 할 수 있습니다. 표시되는 URL은 명확하고 구문 분석하기 쉽도록 구성되어 있습니다. @ Ry4an이 지적했듯이, 파일 브라우저는 모든 파일 버전의 원시 (일명 축 어적으로, HTML 태그 없음) 복사본을 제공합니다.

흥미로운 점을 제기합니다. 나는 Mercurial이 프로그램에서 사용하도록 고안된 Mercurial 특정 XML 형식의 페이지와 동일한 정보를 보내는 XML 템플릿을 사용할 수 있다고 생각합니다.