Show More
@@ -86,19 +86,24 b' class gitstore(object): # store.basicst' | |||
|
86 | 86 | |
|
87 | 87 | |
|
88 | 88 | def _makestore(orig, requirements, storebasepath, vfstype): |
|
89 | # Check for presence of pygit2 only here. The assumption is that we'll | |
|
90 | # run this code iff we'll later need pygit2. | |
|
91 | if gitutil.get_pygit2() is None: | |
|
92 | raise error.Abort( | |
|
93 | _( | |
|
94 | b'the git extension requires the Python ' | |
|
95 | b'pygit2 library to be installed' | |
|
89 | if b'git' in requirements: | |
|
90 | if not os.path.exists(os.path.join(storebasepath, b'..', b'.git')): | |
|
91 | raise error.Abort( | |
|
92 | _( | |
|
93 | b'repository specified git format in ' | |
|
94 | b'.hg/requires but has no .git directory' | |
|
95 | ) | |
|
96 | 96 | ) |
|
97 | ) | |
|
97 | # Check for presence of pygit2 only here. The assumption is that we'll | |
|
98 | # run this code iff we'll later need pygit2. | |
|
99 | if gitutil.get_pygit2() is None: | |
|
100 | raise error.Abort( | |
|
101 | _( | |
|
102 | b'the git extension requires the Python ' | |
|
103 | b'pygit2 library to be installed' | |
|
104 | ) | |
|
105 | ) | |
|
98 | 106 | |
|
99 | if os.path.exists( | |
|
100 | os.path.join(storebasepath, b'this-is-git') | |
|
101 | ) and os.path.exists(os.path.join(storebasepath, b'..', b'.git')): | |
|
102 | 107 | return gitstore(storebasepath, vfstype) |
|
103 | 108 | return orig(requirements, storebasepath, vfstype) |
|
104 | 109 | |
@@ -128,9 +133,7 b' def _setupdothg(ui, path):' | |||
|
128 | 133 | os.path.join(path, b'.git', b'info', b'exclude'), 'ab' |
|
129 | 134 | ) as exclude: |
|
130 | 135 | exclude.write(b'\n.hg\n') |
|
131 |
with open(os.path.join(dothg, b' |
|
|
132 | pass | |
|
133 | with open(os.path.join(dothg, b'requirements'), 'wb') as f: | |
|
136 | with open(os.path.join(dothg, b'requires'), 'wb') as f: | |
|
134 | 137 | f.write(b'git\n') |
|
135 | 138 | |
|
136 | 139 | |
@@ -256,6 +259,11 b' def reposetup(ui, repo):' | |||
|
256 | 259 | return repo |
|
257 | 260 | |
|
258 | 261 | |
|
262 | def _featuresetup(ui, supported): | |
|
263 | # don't die on seeing a repo with the git requirement | |
|
264 | supported |= {b'git'} | |
|
265 | ||
|
266 | ||
|
259 | 267 | def extsetup(ui): |
|
260 | 268 | extensions.wrapfunction(localrepo, b'makestore', _makestore) |
|
261 | 269 | extensions.wrapfunction(localrepo, b'makefilestorage', _makefilestorage) |
@@ -264,3 +272,4 b' def extsetup(ui):' | |||
|
264 | 272 | entry[1].extend( |
|
265 | 273 | [(b'', b'git', None, b'setup up a git repository instead of hg')] |
|
266 | 274 | ) |
|
275 | localrepo.featuresetupfuncs.add(_featuresetup) |
@@ -1,13 +1,12 b'' | |||
|
1 | 1 | #require pygit2 |
|
2 | 2 | |
|
3 | 3 | Setup: |
|
4 |
|
|
|
4 | $ GIT_AUTHOR_NAME='test'; export GIT_AUTHOR_NAME | |
|
5 | 5 | > GIT_AUTHOR_EMAIL='test@example.org'; export GIT_AUTHOR_EMAIL |
|
6 | 6 | > GIT_AUTHOR_DATE="2007-01-01 00:00:00 +0000"; export GIT_AUTHOR_DATE |
|
7 | 7 | > GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"; export GIT_COMMITTER_NAME |
|
8 | 8 | > GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"; export GIT_COMMITTER_EMAIL |
|
9 | 9 | > GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"; export GIT_COMMITTER_DATE |
|
10 | ||
|
11 | 10 | > count=10 |
|
12 | 11 | > gitcommit() { |
|
13 | 12 | > GIT_AUTHOR_DATE="2007-01-01 00:00:$count +0000"; |
@@ -16,7 +15,28 b' Setup:' | |||
|
16 | 15 | > count=`expr $count + 1` |
|
17 | 16 | > } |
|
18 | 17 | |
|
19 | > echo "[extensions]" >> $HGRCPATH | |
|
18 | ||
|
19 | Test auto-loading extension works: | |
|
20 | $ mkdir nogit | |
|
21 | $ cd nogit | |
|
22 | $ mkdir .hg | |
|
23 | $ echo git >> .hg/requires | |
|
24 | $ hg status | |
|
25 | abort: repository specified git format in .hg/requires but has no .git directory | |
|
26 | [255] | |
|
27 | $ git init | |
|
28 | Initialized empty Git repository in $TESTTMP/nogit/.git/ | |
|
29 | This status invocation shows some hg gunk because we didn't use | |
|
30 | `hg init --git`, which fixes up .git/info/exclude for us. | |
|
31 | $ hg status | |
|
32 | ? .hg/cache/git-commits.sqlite | |
|
33 | ? .hg/cache/git-commits.sqlite-shm | |
|
34 | ? .hg/cache/git-commits.sqlite-wal | |
|
35 | ? .hg/requires | |
|
36 | $ cd .. | |
|
37 | ||
|
38 | Now globally enable extension for the rest of the test: | |
|
39 | $ echo "[extensions]" >> $HGRCPATH | |
|
20 | 40 | > echo "git=" >> $HGRCPATH |
|
21 | 41 | |
|
22 | 42 | Make a new repo with git: |
General Comments 0
You need to be logged in to leave comments.
Login now