chiark / gitweb /
Better diagnostic for wrong branch configuration.
authorYann Dirson <ydirson@altern.org>
Fri, 5 Oct 2007 20:44:52 +0000 (22:44 +0200)
committerCatalin Marinas <catalin.marinas@gmail.com>
Sun, 7 Oct 2007 21:01:04 +0000 (22:01 +0100)
If the branch.*.merge parameter does not name a valid remote head,
stgit would not rebase after a fetch, and would write instead
'Rebasing to "None" ... done'.

This patch makes this situation an error and tells the user what
to fix in his repo configuration.

stgit/commands/pull.py
stgit/git.py

index 052ea2b6de47ea09d12f218bb9d137f47edf2faa..070db991a389e305f4b5a4583dd84b56f17ce51b 100644 (file)
@@ -90,7 +90,14 @@ def func(parser, options, args):
     elif policy == 'fetch-rebase':
         out.info('Fetching from "%s"' % repository)
         git.fetch(repository)
-        rebase(git.fetch_head())
+        try:
+            target = git.fetch_head()
+        except git.GitException:
+            out.error('Could not find the remote head to rebase onto, pushing any patches back...')
+            post_rebase(applied, False, False)
+            raise CmdException, 'Could not find the remote head to rebase onto - fix branch.%s.merge in .git/config' % crt_series.get_name()
+
+        rebase(target)
     elif policy == 'rebase':
         rebase(crt_series.get_parent_branch())
 
index 9e0f7714f9d48c35d5dc6e718486b4fa7ee2d631..a0493bcda827667c70bced6e87f72c46055aae46 100644 (file)
@@ -1003,11 +1003,14 @@ def fetch_head():
         m = re.match('^([^\t]*)\t\t', line)
         if m:
             if fetch_head:
-                raise GitException, "StGit does not support multiple FETCH_HEAD"
+                raise GitException, 'StGit does not support multiple FETCH_HEAD'
             else:
                 fetch_head=m.group(1)
     stream.close()
 
+    if not fetch_head:
+        raise GitException, 'No for-merge remote head found in FETCH_HEAD'
+
     # here we are sure to have a single fetch_head
     return fetch_head