X-Git-Url: https://git.distorted.org.uk/~mdw/stgit/blobdiff_plain/fba895f5f12a652c248b0fd02b7c41f8342cfbdc..HEAD:/stgit/git.py diff --git a/stgit/git.py b/stgit/git.py index c7cc6a7..6769a9f 100644 --- a/stgit/git.py +++ b/stgit/git.py @@ -808,9 +808,9 @@ def reset(files = None, tree_id = None, check_out = True): if not files: __set_head(tree_id) -def pull(repository = 'origin', refspec = None): - """Pull changes from the remote repository. Uses 'git-fetch' - and moves the stack base. +def fetch(repository = 'origin', refspec = None): + """Fetches changes from the remote repository, using 'git-fetch' + by default. """ # we update the HEAD __clear_head_cache() @@ -823,10 +823,6 @@ def pull(repository = 'origin', refspec = None): if __run(command, args) != 0: raise GitException, 'Failed "%s %s"' % (command, repository) - if (config.get('stgit.pull-does-rebase')): - # FIXME! - reset(tree_id = rev_parse(repository)) - def repack(): """Repack all objects into a single pack """ @@ -908,7 +904,11 @@ def __remotes_from_config(): return config.sections_matching(r'remote\.(.*)\.url') def __remotes_from_dir(dir): - return os.listdir(os.path.join(basedir.get(), dir)) + d = os.path.join(basedir.get(), dir) + if os.path.exists(d): + return os.listdir(d) + else: + return None def remotes_list(): """Return the list of remotes in the repository @@ -931,7 +931,8 @@ def remotes_local_branches(remote): for line in stream: # Only consider Pull lines m = re.match('^Pull: (.*)\n$', line) - branches.append(refspec_localpart(m.group(1))) + if m: + branches.append(refspec_localpart(m.group(1))) stream.close() elif remote in __remotes_from_dir('branches'): # old-style branches only declare one branch @@ -955,3 +956,23 @@ def identify_remote(branchname): # if we get here we've found nothing return None + +def fetch_head(): + """Return the git id for the tip of the parent branch as left by + 'git fetch'. + """ + + fetch_head=None + stream = open(os.path.join(basedir.get(), 'FETCH_HEAD'), "r") + for line in stream: + # Only consider lines not tagged not-for-merge + m = re.match('^([^\t]*)\t\t', line) + if m: + if fetch_head: + raise GitException, "StGit does not support multiple FETCH_HEAD" + else: + fetch_head=m.group(1) + stream.close() + + # here we are sure to have a single fetch_head + return fetch_head