Skip to content

Commit

Permalink
✨(clone): set publicheads to remote HEAD when cloning
Browse files Browse the repository at this point in the history
Summary:
c8b66c6 added support for cloning the remote git repo's HEAD (in this
case `develop`), instead of main/master by default.

However, this doesn't mark `remote/develop` and its ancestors as public
commits.

This commit will also set remote git repo's HEAD as a public commit

Closes #600

Pull Request resolved: #607

Test Plan:
- Added test `test-git-clone-sets-publicheads.t`
  • Loading branch information
vegerot committed Apr 18, 2023
1 parent 9b1da2c commit 91ffca3
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 1 deletion.
12 changes: 11 additions & 1 deletion eden/scm/edenscm/git.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import bindings
from edenscm import tracing

from . import bookmarks as bookmod, error, identity, progress, util
from . import bookmarks as bookmod, error, identity, progress, util, rcutil
from .i18n import _
from .node import bin, hex, nullid

Expand Down Expand Up @@ -153,6 +153,16 @@ def clone(ui, url, destpath=None, update=True, pullnames=None):
# If `git ls-remote --symref <url> HEAD` failed to yield a name,
# fall back to the using the names in the config.
pullnames = bookmod.selectivepullbookmarknames(repo)
default_publicheads = repo.ui.config('remotenames',
'publicheads').split(',') # ['remote/master', 'remote/main']
remote_publicheads = ['remote/' + path for path in pullnames]
all_publicheads = ','.join(sorted(set(default_publicheads + remote_publicheads)))

configfilename = repo.ui.identity.configrepofile()
rcutil.editconfig(repo.ui,
repo.localvfs.join(configfilename),
'remotenames', 'publicheads',
all_publicheads)

# Make sure we pull "update". If it looks like a hash, add to
# "nodes", otherwise to "names".
Expand Down
29 changes: 29 additions & 0 deletions eden/scm/tests/test-git-clone-sets-publicheads.t
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#chg-compatible
#require git no-windows

$ . $TESTDIR/git.sh

Prepare a git repo:

$ git init -q gitrepo
$ cd gitrepo
$ git config core.autocrlf false
$ echo 1 > alpha
$ git add alpha
$ git commit -q -malpha

$ git switch -c foo
Switched to a new branch 'foo'

$ echo 2 > beta
$ git add beta
$ git commit -q -mbeta

Test git clone sets publicheads
$ hg clone --git "$TESTTMP/gitrepo" cloned
From $TESTTMP/gitrepo
* [new ref] 3f5848713286c67b8a71a450e98c7fa66787bde2 -> remote/foo
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd cloned
$ hg config remotenames.publicheads
remote/foo,remote/main,remote/master
3 changes: 3 additions & 0 deletions eden/scm/tests/test-git.t
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,9 @@ Test clone with flags (--noupdate, --updaterev):
remote/master 3f5848713286
$ cd ..

# This test is VERY suspicious. It's supposed to test `ls-remote` symref HEAD
# parsing, but it passes `--updaterev` that totally circumvents all the code
# it's supposed to test
$ hg clone --git "$TESTTMP/gitrepo" -u foo cloned1
From $TESTTMP/gitrepo
* [new ref] 3f5848713286c67b8a71a450e98c7fa66787bde2 -> remote/master
Expand Down

0 comments on commit 91ffca3

Please sign in to comment.