Print progress message to stderr, not stdout
[stgit] / stgit / git.py
index db3a894..0e83ffc 100644 (file)
@@ -186,8 +186,9 @@ def __tree_status(files = None, tree_id = 'HEAD', unknown = False,
     """Returns a list of pairs - [status, filename]
     """
     if verbose:
-        print 'Checking for changes in the working directory...',
-        sys.stdout.flush()
+        print >> sys.stderr, \
+              'Checking for changes in the working directory...',
+        sys.stderr.flush()
 
     refresh_index()
 
@@ -226,7 +227,7 @@ def __tree_status(files = None, tree_id = 'HEAD', unknown = False,
             cache_files.append(fs)
 
     if verbose:
-        print 'done'
+        print >> sys.stderr, 'done'
 
     return cache_files
 
@@ -515,8 +516,12 @@ def merge(base, head1, head2):
     local tree
     """
     refresh_index()
-    if __run('git-read-tree -u -m --aggressive', [base, head1, head2]) != 0:
-        raise GitException, 'git-read-tree failed (local changes maybe?)'
+
+    try:
+        # use _output() to mask the verbose prints of the tool
+        _output('git-merge-recursive %s -- %s %s' % (base, head1, head2))
+    except GitException:
+        pass
 
     # check the index for unmerged entries
     files = {}
@@ -705,6 +710,11 @@ def pull(repository = 'origin', refspec = None):
     if __run(config.get('stgit', 'pullcmd'), args) != 0:
         raise GitException, 'Failed "git-pull %s"' % repository
 
+def repack():
+    """Repack all objects into a single pack
+    """
+    __run('git-repack -a -d -f')
+
 def apply_patch(filename = None, diff = None, base = None,
                 fail_dump = True):
     """Apply a patch onto the current or given index. There must not