programing

Mercurial 폴더를 Git 저장소로 변환

javamemo 2023. 8. 23. 21:32
반응형

Mercurial 폴더를 Git 저장소로 변환

저는 머큐리얼에 대한 경험이 많지 않습니다. 저는 대부분 기트족입니다.

Git Repository의 특정 Mercurial 폴더/파일을 미러링하고 싶습니다.제가 실제로 하려고 하는 것은 Mercurial 저장소에서 Git로 파일의 기록을 내보내고 이를 향후 커밋과 동기화할 수 있도록 하는 것입니다.

어떻게 진행해야 할지 제안할 사항이 있습니까?저는 Mercurial 패치의 기록을 가져와 모든 커밋을 패치로 정기적으로 내보내고 Git 저장소에 Mercurial 패치를 적용하는 것이 방법이라고 생각합니다.

Linux 또는 기타 기능을 사용하는 경우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:거북이HG Hg-Git 확장

HG-Git는 머큐리얼 저장소를 Git로 변환하는 데 사용할 수 있습니다.SSH, HTTP 또는 HTTPS를 통해 액세스하는 로컬 리포지토리 또는 원격 리포지토리를 사용할 수 있습니다.

로컬 리포지토리 변환의 예입니다.

  1. HG-Git를 설치합니다.

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

      TortoiseHg Settings

      또는 수동으로~/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-git가 현재 체크아웃된 Git를 혼란스럽게 하는 분기로 푸시됩니다.이름이 지정된 분기가 생성됩니다.hgGit 저장소에 있습니다.마스터에서 변경 내용을 가져오려면 다음 명령을 사용합니다(처음 실행할 때만 필요하고 나중에 사용).git merge또는rebase):

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

Mercurial 쪽에서 가능:

  • 확장명 변환 사용--filemap옵션: 원본 레포의 일부를 필요한 파일만 사용하여 더 작은 크기로 변환|디렉토리
  • hg-git 확장으로 Git에 복사된 보고서를 푸시합니다.

또는 (hg-git 대신) Git의 Mercurial 브리지를 사용하여 clone|Git에서 저장소 가져오기

깃티파이

현대적이고 사용하기 쉬운 대안으로 보입니다. 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

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

인코딩에 문제가 없으면 Tortoo를 사용합니다.HG 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

인코딩에 문제가 있는 경우 - fast-export 사용

Bash 설치

PowerShell을 Administrator로 열고 다음을 실행합니다.

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

Microsoft Store에서 Ubuntu 16.04 LTS 설치

Bash 열기 및 실행

수은주를 매기다

sudo -s
apt-get update
apt install mercurial

fast-export 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

수입이 빠른

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

은 없다습니필이 하지 않습니다.Python그리고.Mercurial 분기를 .고급 구성을 사용하여 작성자 또는 분기를 바꾸고, 분기를 접두사로 지정하는 등의 작업을 수행할 수 있습니다.

github.com 사용하는 경우 hg 프로젝트의 URL을 간단히 입력할 수 있는 가져오기 기능이 있는 것 같습니다.

먼저 리포지토리를 만든 다음 새 리포지토리의 시작 페이지에서 맨 아래로 스크롤하고 "코드 가져오기" 단추를 클릭합니다.

context for the import code button

그런 다음 이전 리포지토리의 URL을 입력하고 "가져오기 시작"을 누릅니다.

context for "Begin import" button

그럼 나머지는 깃허브가 처리해요!

Github taking care of business for you

GitHub은 이전 리포지토리에 대한 자격 증명이 필요한 경우 해당 자격 증명을 요청합니다.

! 공식 가이드를 찾았어요

Windows에서는 약간 까다로울 수 있습니다.Mercurial)에서hggit), 거북이), 할 수 HG도 사용할 수 있습니다.

  1. 수은 레포 복제
  2. git repo 복제
  3. 콘솔 사용: 콘솔 사용
  4. 콘솔 사용:

    % hg bookmarks hg

    % hg push <relative path to>/<git-repo>

언급URL : https://stackoverflow.com/questions/10710250/converting-mercurial-folder-to-a-git-repository

반응형