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과 함께 제공되지만 설정 도구 (확장 섹션)를 통해 활성화 해야합니다.

      TortoiseHg 설정

      또는 수동으로 ~/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의 비즈니스 관리

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

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