Mercurial 폴더를 Git 저장소로 변환 미러링하고 싶습니다. 내가 실제로하려는 것은

나는 Mercurial에 대한 큰 경험이 없으며 대부분 Git 사람입니다.

자식 저장소에 특정 Mercurial 폴더 / 파일을 미러링하고 싶습니다. 내가 실제로하려는 것은 Mercurial 저장소에서 Git으로 파일 히스토리를 내보내고 향후 커밋과 동기화 할 수있게하는 것입니다.

진행하는 방법에 대한 제안이 있습니까? 나는 가야 할 길은 Mercurial 패치의 이력을 얻고, 모든 커밋을 정기적으로 패치로 내보내고 Mercurial 패치를 Git 저장소에 적용하는 것이어야한다고 생각합니다.



답변

리눅스 또는 아무것도 bash/sh또는 유사한, 또는 python으로 시도 빠른 수출 :

cd
git clone git://repo.or.cz/fast-export.git
git init git_repo
cd git_repo
~/fast-export/hg-fast-export.sh -r /path/to/old/mercurial_repo
git checkout HEAD

답변

Windows : TortoiseHG Hg-Git 확장

Hg-Git 을 사용하여 Mercurial 저장소를 Git으로 변환 할 수 있습니다. SSH, HTTP 또는 HTTPS를 통해 액세스되는 로컬 저장소 또는 원격 저장소를 사용할 수 있습니다.

로컬 리포지토리 변환의 예

  1. Hg-Git을 설치하십시오.

    • Windows에서 TortoiseHg 는 Hg-Git과 함께 제공되지만 설정 도구 (확장 섹션)를 통해 활성화 해야합니다.

      또는 수동으로 ~/mercurial.ini

      [extensions]
      hggit =
      
  2. 다음 명령을 사용하여 저장소를 변환하십시오.

    $ mkdir git-repo; cd git-repo; git init; cd ..
    $ cd hg-repo
    $ hg bookmarks hg
    $ hg push ../git-repo
    

hg책갈피 힘내 혼란 현재 체크 아웃 지점에 다른 HG-자식 푸시 등의 문제를 방지 할 필요가있다. hgGit 리포지토리에 이름의 브랜치를 만듭니다 . master에서 변경 사항을 얻으려면 다음 명령을 사용하십시오 (첫 번째 실행에서만 필요하며 나중에는 git merge또는을 사용하십시오 rebase).

$ cd git-repo
$ git checkout -b master hg

답변

당신은 (머큐리얼 측에서) 할 수 있습니다 :

  • 확장명 변환 사용--filemap 디렉토리 |에만 필요한 파일과 작은으로 원래의 repo의 옵션을 변환 부분을
  • HG-git 확장 푸시 리포지토리를 Git으로

또는 Git에서 Mercurial 브리지를 사용하여 (hg-git 대신) Git 에서 저장소를 가져옵니다.


답변

Gitify

변환을 수행하는 더 현대적이고 사용하기 쉬운 대안으로 보입니다
https://github.com/buchuki/gitifyhg

pip install gitifyhg
git clone gitifyhg::<hgrepoaddress>
# done, you have a git repo with the entire history of the hg one

답변

Windows 10에서 Mercurial 저장소를 Git으로 변환

인코딩에 문제가없는 경우 TortoiseHG Hg-Git 확장을 사용하십시오.

md new-repo && cd new-repo
git init --bare .git
cd ..\old-mercurial-repo
hg bookmark -r default master
hg push ..\new-repo
cd ..\new-repo
git config --bool core.bare false

인코딩에 문제가있는 경우 빠른 내보내기를 사용하십시오.

배쉬 설치

관리자 권한으로 PowerShell을 열고 다음을 실행하십시오.

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Microsoft Store 에서 Ubuntu 16.04 LTS 설치

배쉬를 열고 실행

수은을 설치하다

sudo -s
apt-get update
apt install mercurial

빠른 내보내기 v180317 가져 오기 (180317 이후 버전이 올바르게 작동하지 않는 순간)

cd /mnt/c/path_to_work_folder
git clone https://github.com/frej/fast-export.git
cd fast-export
git checkout tags/v180317
cd ..

저장소 변환

git init new-repo && cd new-repo
git config core.ignoreCase false && git config core.quotepath off
../fast-export/hg-fast-export.sh -r ../path_to_mercurial_repo/ --fe cp1251
git checkout master

인코딩 옵션 :

  • -f 같은 인코딩 -f cp1251
  • --fe 같은 파일 이름 인코딩 --fe cp1251

답변

hg-git-fast-import

https://github.com/kilork/hg-git-fast-import

다음과 같은 기능을 가진 또 다른 유틸리티 :

  1. 단일 및 다중 Mercurial 리포지토리를 Git 리포지토리로 가져 오기
  2. 이전에 가져온 Mercurial 저장소에서 Git 저장소로 새 개정판 가져 오기
  3. 태그.
  4. 닫힌 가지.
  5. diff로 최종 결과 확인.

당신은 당신을 위해 바이너리 다운로드 할 수 있습니다 플랫폼 및 경로 어딘가에 넣어 또는 사용하여 설치 cargo(필요로 rust하는 설치 ) :

cargo install hg-git-fast-import

그런 다음 사용법은 다음과 같습니다.

hg-git-fast-import single /path/to/source_hg /path/to/target_git

그것은 필요하지 않습니다 PythonMercurial설치해야합니다. 고급 구성을 사용하면 작성자 또는 분기를 대체하고 분기를 접두사 등으로 만들 수 있습니다.


답변

github.com을 사용 하는 경우 가져 오기 기능있는 것으로 보입니다. 사용하면 간단하게 HG 프로젝트의 URL을 입력 할 수 있습니다.

먼저 새 저장소 를 만든 다음 새 저장소의 방문 페이지에서 맨 아래로 스크롤하여 “코드 가져 오기”버튼을 클릭하십시오 .

그런 다음 이전 저장소URL을 입력하고 “가져 오기 시작”을 누르십시오.

그런 다음 GitHub가 나머지를 처리합니다!

GitHub는 필요한 경우 기존 리포지토리에 대한 자격 증명을 요구합니다.

아! 공식 가이드를 찾았습니다