나는 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를 통해 액세스되는 로컬 저장소 또는 원격 저장소를 사용할 수 있습니다.
로컬 리포지토리 변환의 예
-
Hg-Git을 설치하십시오.
-
Windows에서 TortoiseHg 는 Hg-Git과 함께 제공되지만 설정 도구 (확장 섹션)를 통해 활성화 해야합니다.
또는 수동으로
~/mercurial.ini
[extensions] hggit =
-
-
다음 명령을 사용하여 저장소를 변환하십시오.
$ mkdir git-repo; cd git-repo; git init; cd .. $ cd hg-repo $ hg bookmarks hg $ hg push ../git-repo
hg
책갈피 힘내 혼란 현재 체크 아웃 지점에 다른 HG-자식 푸시 등의 문제를 방지 할 필요가있다. hg
Git 리포지토리에 이름의 브랜치를 만듭니다 . 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
다음과 같은 기능을 가진 또 다른 유틸리티 :
- 단일 및 다중 Mercurial 리포지토리를 Git 리포지토리로 가져 오기
- 이전에 가져온 Mercurial 저장소에서 Git 저장소로 새 개정판 가져 오기
- 태그.
- 닫힌 가지.
- 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을 입력 할 수 있습니다.
먼저 새 저장소 를 만든 다음 새 저장소의 방문 페이지에서 맨 아래로 스크롤하여 “코드 가져 오기”버튼을 클릭하십시오 .
그런 다음 이전 저장소 의 URL을 입력하고 “가져 오기 시작”을 누르십시오.
그런 다음 GitHub가 나머지를 처리합니다!
GitHub는 필요한 경우 기존 리포지토리에 대한 자격 증명을 요구합니다.
아! 공식 가이드를 찾았습니다