mirror of
https://github.com/mnauw/git-remote-hg.git
synced 2025-10-27 14:46:06 +01:00
Merge tag 'v0.5' into felipec
These changes can be merged with limited to no conflict resolution.
This commit is contained in:
26
.github/workflows/main.yml
vendored
Normal file
26
.github/workflows/main.yml
vendored
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
hg: [ '5.0', '5.1', '5.2', '5.3', '5.4', '5.5', '5.6', '5.7' ]
|
||||||
|
env:
|
||||||
|
HG_VERSION: ${{ matrix.hg }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: '2.7'
|
||||||
|
- name: Install python-dev
|
||||||
|
run: sudo apt-get install -y python2.7-dev
|
||||||
|
- name: Cache check-versions script
|
||||||
|
id: cache-check-versions
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: ~/.cache/git-remote-hg
|
||||||
|
key: check-versions
|
||||||
|
- run: ./tools/check-versions hg:$HG_VERSION
|
||||||
20
.travis.yml
20
.travis.yml
@@ -1,20 +0,0 @@
|
|||||||
dist: xenial
|
|
||||||
language: minimal
|
|
||||||
|
|
||||||
cache:
|
|
||||||
directories:
|
|
||||||
- $HOME/.cache/git-remote-hg
|
|
||||||
|
|
||||||
script:
|
|
||||||
- ./tools/check-versions hg:$HG_VERSION
|
|
||||||
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- env:
|
|
||||||
- env: HG_VERSION=@
|
|
||||||
- env: HG_VERSION=5.0
|
|
||||||
- env: HG_VERSION=4.9
|
|
||||||
- env: HG_VERSION=4.8
|
|
||||||
- env: HG_VERSION=4.7
|
|
||||||
- env: HG_VERSION=4.6
|
|
||||||
- env: HG_VERSION=4.5
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
'git-remote-hg' is the semi-official Mercurial bridge from Git project, once
|
`git-remote-hg` is the semi-official Mercurial bridge from the Git project, once
|
||||||
installed, it allows you to clone, fetch and push to and from Mercurial
|
installed, it allows you to clone, fetch and push to and from Mercurial
|
||||||
repositories as if they were Git ones:
|
repositories as if they were Git ones:
|
||||||
|
|
||||||
@@ -6,10 +6,10 @@ repositories as if they were Git ones:
|
|||||||
git clone "hg::http://selenic.com/repo/hello"
|
git clone "hg::http://selenic.com/repo/hello"
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
|
|
||||||
To enable this, simply add the 'git-remote-hg' script anywhere in your `$PATH`:
|
To enable this, simply add the `git-remote-hg` script anywhere in your `$PATH`:
|
||||||
|
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
wget https://raw.github.com/mnauw/git-remote-hg/master/git-remote-hg -O ~/bin/git-remote-hg
|
wget https://raw.githubusercontent.com/mnauw/git-remote-hg/master/git-remote-hg -O ~/bin/git-remote-hg
|
||||||
chmod +x ~/bin/git-remote-hg
|
chmod +x ~/bin/git-remote-hg
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
|
|
||||||
@@ -49,7 +49,8 @@ If you want to see Mercurial revisions as Git commit notes:
|
|||||||
% git config core.notesRef refs/notes/hg
|
% git config core.notesRef refs/notes/hg
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
|
|
||||||
If you are not interested in Mercurial permanent and global branches (aka. commit labels):
|
If you are not interested in Mercurial permanent and global branches (aka.
|
||||||
|
commit labels):
|
||||||
|
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
% git config --global remote-hg.track-branches false
|
% git config --global remote-hg.track-branches false
|
||||||
@@ -57,13 +58,14 @@ If you are not interested in Mercurial permanent and global branches (aka. commi
|
|||||||
|
|
||||||
With this configuration, the 'branches/foo' refs won't appear.
|
With this configuration, the 'branches/foo' refs won't appear.
|
||||||
|
|
||||||
If you want the equivalent of 'hg clone --insecure':
|
If you want the equivalent of `hg clone --insecure`:
|
||||||
|
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
% git config --global remote-hg.insecure true
|
% git config --global remote-hg.insecure true
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
|
|
||||||
If you want 'git-remote-hg' to be compatible with 'hg-git', and generate exactly the same commits:
|
If you want `git-remote-hg` to be compatible with `hg-git`, and generate exactly
|
||||||
|
the same commits:
|
||||||
|
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
% git config --global remote-hg.hg-git-compat true
|
% git config --global remote-hg.hg-git-compat true
|
||||||
@@ -71,15 +73,17 @@ If you want 'git-remote-hg' to be compatible with 'hg-git', and generate exactly
|
|||||||
|
|
||||||
== Notes ==
|
== Notes ==
|
||||||
|
|
||||||
Remember to run `git gc --aggressive` after cloning a repository, specially if
|
Remember to run `git gc --aggressive` after cloning a repository, especially if
|
||||||
it's a big one. Otherwise lots of space will be wasted.
|
it's a big one. Otherwise lots of space will be wasted.
|
||||||
|
|
||||||
The oldest version of mercurial supported is 1.9. For the most part 1.8 works,
|
The newest supported version of Mercurial is 6.1 but only through Python 2. The
|
||||||
but you might experience some issues.
|
oldest one is 2.4.
|
||||||
|
|
||||||
|
Support for Python 3 is ready, but will be released in the next version soon.
|
||||||
|
|
||||||
=== Pushing branches ===
|
=== Pushing branches ===
|
||||||
|
|
||||||
To push a branch, you need to use the "branches/" prefix:
|
To push a branch, you need to use the 'branches/' prefix:
|
||||||
|
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
% git checkout branches/next
|
% git checkout branches/next
|
||||||
@@ -89,7 +93,7 @@ To push a branch, you need to use the "branches/" prefix:
|
|||||||
|
|
||||||
All the pushed commits will receive the "next" Mercurial named branch.
|
All the pushed commits will receive the "next" Mercurial named branch.
|
||||||
|
|
||||||
*Note*: Make sure you don't have +remote-hg.track-branches+ disabled.
|
*Note*: Make sure you don't have `remote-hg.track-branches` disabled.
|
||||||
|
|
||||||
=== Cloning HTTPS ===
|
=== Cloning HTTPS ===
|
||||||
|
|
||||||
@@ -99,7 +103,7 @@ The simplest way is to specify the user and password in the URL:
|
|||||||
git clone hg::https://user:password@bitbucket.org/user/repo
|
git clone hg::https://user:password@bitbucket.org/user/repo
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
|
|
||||||
You can also use the http://mercurial.selenic.com/wiki/SchemesExtension[schemes extension]:
|
You can also use the https://mercurial-scm.org/wiki/SchemesExtension[schemes extension]:
|
||||||
|
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
[auth]
|
[auth]
|
||||||
@@ -109,11 +113,7 @@ bb.password = password
|
|||||||
--------------------------------------
|
--------------------------------------
|
||||||
|
|
||||||
Finally, you can also use the
|
Finally, you can also use the
|
||||||
https://pypi.python.org/pypi/mercurial_keyring[keyring extension].
|
https://pypi.org/project/mercurial_keyring[keyring extension].
|
||||||
|
|
||||||
However, some of these features require very new versions of 'git-remote-hg',
|
|
||||||
so you might have better luck simply specifying the username and password in
|
|
||||||
the URL.
|
|
||||||
|
|
||||||
=== Submodules ===
|
=== Submodules ===
|
||||||
|
|
||||||
@@ -141,10 +141,10 @@ Mercurial branches and bookmarks have some limitations of Git branches: you
|
|||||||
can't have both 'dev/feature' and 'dev' (as Git uses files and directories to
|
can't have both 'dev/feature' and 'dev' (as Git uses files and directories to
|
||||||
store them).
|
store them).
|
||||||
|
|
||||||
Multiple anonymous heads (which are useless anyway) are not supported; you
|
Multiple anonymous heads (which are useless anyway) are not supported: you
|
||||||
would only see the latest head.
|
would only see the latest head.
|
||||||
|
|
||||||
Closed branches are not supported; they are not shown and you can't close or
|
Closed branches are not supported: they are not shown and you can't close or
|
||||||
reopen. Additionally in certain rare situations a synchronization issue can
|
reopen. Additionally in certain rare situations a synchronization issue can
|
||||||
occur (https://github.com/felipec/git/issues/65[Bug #65]).
|
occur (https://github.com/felipec/git/issues/65[Bug #65]).
|
||||||
|
|
||||||
@@ -170,16 +170,27 @@ below for more details.
|
|||||||
|
|
||||||
== Other projects ==
|
== Other projects ==
|
||||||
|
|
||||||
There are other 'git-remote-hg' projects out there, do not confuse this one,
|
There are other `git-remote-hg` projects out there, but this is the original,
|
||||||
this is the one distributed officially by the Git project
|
which was distributed officially in the Git project.
|
||||||
(_though actually no longer so nowadays_):
|
|
||||||
|
|
||||||
* https://github.com/msysgit/msysgit/wiki/Guide-to-git-remote-hg[msysgit's git-remote-hg]
|
Over the years many similar tools have died out, the only actively maintained
|
||||||
* https://github.com/rfk/git-remote-hg[rfk's git-remote-hg]
|
alternative is mnauw's fork of this project:
|
||||||
|
https://github.com/mnauw/git-remote-hg[mnauw/git-remote-hg]. I've merged some of
|
||||||
|
his patches, and he has merged some of my patches, so the projects are mostly in
|
||||||
|
sync, but not quite. In particular Nauwelaerts' fork has many administrative
|
||||||
|
extensions, which although useful to some people, I don't believe they belong
|
||||||
|
in the core.
|
||||||
|
|
||||||
For a comparison between these and other projects go
|
For a comparison between these and other projects go
|
||||||
https://github.com/felipec/git/wiki/Comparison-of-git-remote-hg-alternatives[here].
|
https://github.com/felipec/git/wiki/Comparison-of-git-remote-hg-alternatives[here].
|
||||||
|
|
||||||
|
****
|
||||||
|
mnauw's note; I do not know what "the core" means?
|
||||||
|
However, the "extensions" provide useful and possibly
|
||||||
|
critical maintenance wrt git-remote-hg's internal data, so it belongs as close
|
||||||
|
to the latter one as possible.
|
||||||
|
****
|
||||||
|
|
||||||
[[no-limitations]]
|
[[no-limitations]]
|
||||||
== Limitations (or not) ==
|
== Limitations (or not) ==
|
||||||
|
|
||||||
|
|||||||
@@ -159,6 +159,9 @@ def die(msg):
|
|||||||
compat.stderr.write(b'ERROR: %s\n' % compat.to_b(msg, 'utf-8'))
|
compat.stderr.write(b'ERROR: %s\n' % compat.to_b(msg, 'utf-8'))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
def debug(*args):
|
||||||
|
compat.stderr.write(b'DEBUG: %s\n' % compat.to_b(repr(args)))
|
||||||
|
|
||||||
def warn(msg):
|
def warn(msg):
|
||||||
compat.stderr.write(b'WARNING: %s\n' % compat.to_b(msg, 'utf-8'))
|
compat.stderr.write(b'WARNING: %s\n' % compat.to_b(msg, 'utf-8'))
|
||||||
compat.stderr.flush()
|
compat.stderr.flush()
|
||||||
|
|||||||
@@ -209,6 +209,10 @@ def add_component(id, url, **args)
|
|||||||
end
|
end
|
||||||
|
|
||||||
hg_checkout_fix = lambda do |version|
|
hg_checkout_fix = lambda do |version|
|
||||||
|
if check_version(version, '5.7')
|
||||||
|
run_cmd %W[hg import -q --no-commit #{__dir__}/hg_revert_5.7.patch]
|
||||||
|
end
|
||||||
|
|
||||||
FileUtils.cp('hg', "#{$builddir}/bin/")
|
FileUtils.cp('hg', "#{$builddir}/bin/")
|
||||||
|
|
||||||
return if check_version(version, '4.3')
|
return if check_version(version, '4.3')
|
||||||
@@ -225,10 +229,14 @@ add_component(:hg, 'https://www.mercurial-scm.org/repo/hg', checkout_fix: hg_che
|
|||||||
hggit_checkout_fix = lambda do |version|
|
hggit_checkout_fix = lambda do |version|
|
||||||
return unless check_version(version, '0.8.0')
|
return unless check_version(version, '0.8.0')
|
||||||
|
|
||||||
run_cmd %W[hg import -q --no-commit #{__dir__}/hggit_rename_fix_0.8.0.patch], fatal: false
|
if check_version(version, '0.9.0')
|
||||||
|
run_cmd %W[hg import -q --no-commit #{__dir__}/hggit_rename_fix_0.9.0.patch], fatal: false
|
||||||
|
else
|
||||||
|
run_cmd %W[hg import -q --no-commit #{__dir__}/hggit_rename_fix_0.8.0.patch], fatal: false
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
add_component(:hggit, 'https://bitbucket.org/durin42/hg-git', checkout_fix: hggit_checkout_fix)
|
add_component(:hggit, 'https://foss.heptapod.net/mercurial/hg-git', checkout_fix: hggit_checkout_fix)
|
||||||
|
|
||||||
add_component(:dulwich, 'https://github.com/dulwich/dulwich.git', version_format: 'dulwich-%s', kind: :git)
|
add_component(:dulwich, 'https://github.com/dulwich/dulwich.git', version_format: 'dulwich-%s', kind: :git)
|
||||||
|
|
||||||
@@ -280,7 +288,7 @@ elsif not $versions.empty?
|
|||||||
# mode 2
|
# mode 2
|
||||||
$verbosity = HIGH
|
$verbosity = HIGH
|
||||||
|
|
||||||
exit check(versions) ? 0 : 1
|
exit check($versions) ? 0 : 1
|
||||||
else
|
else
|
||||||
# mode 3
|
# mode 3
|
||||||
$verbosity = QUIET
|
$verbosity = QUIET
|
||||||
|
|||||||
24
tools/hg_revert_5.7.patch
Normal file
24
tools/hg_revert_5.7.patch
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
diff --git a/hg b/hg
|
||||||
|
index 4ec2b6140b..a3e61ad39c 100755
|
||||||
|
--- a/hg
|
||||||
|
+++ b/hg
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-#!/usr/bin/env python3
|
||||||
|
+#!/usr/bin/env python
|
||||||
|
#
|
||||||
|
# mercurial - scalable distributed SCM
|
||||||
|
#
|
||||||
|
diff --git a/mercurial/hg.py b/mercurial/hg.py
|
||||||
|
index 1a7a281e30..bf75f15ac1 100644
|
||||||
|
--- a/mercurial/hg.py
|
||||||
|
+++ b/mercurial/hg.py
|
||||||
|
@@ -1013,7 +1013,7 @@ def clone(
|
||||||
|
pass
|
||||||
|
if uprev is None:
|
||||||
|
try:
|
||||||
|
- if destrepo._activebookmark:
|
||||||
|
+ if False:
|
||||||
|
uprev = destrepo.lookup(destrepo._activebookmark)
|
||||||
|
update = destrepo._activebookmark
|
||||||
|
else:
|
||||||
|
|
||||||
22
tools/hggit_rename_fix_0.9.0.patch
Normal file
22
tools/hggit_rename_fix_0.9.0.patch
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
diff --git a/hggit/git_handler.py b/hggit/git_handler.py
|
||||||
|
--- a/hggit/git_handler.py
|
||||||
|
+++ b/hggit/git_handler.py
|
||||||
|
@@ -829,6 +829,8 @@
|
||||||
|
def import_git_commit(self, commit):
|
||||||
|
self.ui.debug(_(b"importing: %s\n") % commit.id)
|
||||||
|
|
||||||
|
+ extra_in_message = self.ui.configbool(b'git', b'debugextrainmessage', False)
|
||||||
|
+
|
||||||
|
detect_renames = False
|
||||||
|
(strip_message, hg_renames,
|
||||||
|
hg_branch, extra) = git2hg.extract_hg_metadata(
|
||||||
|
@@ -839,7 +841,8 @@
|
||||||
|
# renames detected from Git. This is because we export an extra
|
||||||
|
# 'HG:rename-source' Git parameter when this isn't set, which will
|
||||||
|
# break bidirectionality.
|
||||||
|
- extra[b'hg-git-rename-source'] = b'git'
|
||||||
|
+ if not extra_in_message:
|
||||||
|
+ extra[b'hg-git-rename-source'] = b'git'
|
||||||
|
else:
|
||||||
|
renames = hg_renames
|
||||||
|
|
||||||
@@ -26,8 +26,17 @@ hg:4.3 hggit:0.8.10 dulwich:0.18.0 # 2017_11
|
|||||||
hg:4.4 hggit:0.8.10 dulwich:0.18.0 # 2017_11
|
hg:4.4 hggit:0.8.10 dulwich:0.18.0 # 2017_11
|
||||||
|
|
||||||
hg:4.5 hggit:0.8.11 dulwich:0.18.0 # 2018_02
|
hg:4.5 hggit:0.8.11 dulwich:0.18.0 # 2018_02
|
||||||
hg:4.6 hggit:0.8.12 dulwich:0.19.7 # 2018_10
|
hg:4.6 hggit:0.8.13 dulwich:0.19.7 # 2018_10
|
||||||
hg:4.7 hggit:0.8.12 dulwich:0.19.7 # 2018_10
|
hg:4.7 hggit:0.8.13 dulwich:0.19.7 # 2018_10
|
||||||
hg:4.8 hggit:@ dulwich:0.19.11
|
hg:4.8 hggit:0.8.13 dulwich:0.19.7 # 2018_10
|
||||||
hg:4.9 hggit:@ dulwich:0.19.11
|
hg:4.9 hggit:0.8.13 dulwich:0.19.7 # 2019_01
|
||||||
hg:5.0 hggit:@ dulwich:0.19.11
|
hg:5.0 hggit:0.8.13 dulwich:0.19.7 # 2019_04
|
||||||
|
hg:5.1 hggit:0.8.13 dulwich:0.19.7 # 2019_07
|
||||||
|
hg:5.2 hggit:0.8.13 dulwich:0.19.7 # 2019_11
|
||||||
|
|
||||||
|
hg:5.3 hggit:0.9.0 dulwich:0.19.15 # 2020_01
|
||||||
|
hg:5.4 hggit:0.9.0 dulwich:0.19.15 # 2020_04
|
||||||
|
hg:5.5 hggit:0.9.0 dulwich:0.19.15 # 2020_08
|
||||||
|
hg:5.6 hggit:0.9.0 dulwich:0.19.15 # 2020_10
|
||||||
|
|
||||||
|
hg:5.7 hggit:0.10.0 dulwich:0.19.16 # 2021_01
|
||||||
|
|||||||
Reference in New Issue
Block a user