chiark / gitweb /
Make 'stg pull' use 'git pull' directly
authorCatalin Marinas <catalin.marinas@gmail.com>
Mon, 15 Aug 2005 16:16:23 +0000 (17:16 +0100)
committerCatalin Marinas <catalin.marinas@gmail.com>
Mon, 15 Aug 2005 16:16:23 +0000 (17:16 +0100)
In the initial version, 'git fetch' was used but its interface might
change in the future.

Signed-off-by: Catalin Marinas <catalin.marinas@gmail.com>
stgit/commands/pull.py
stgit/git.py

index 3bad08633257ff36ec3c9018ad2d18b1135721e0..2aba4440c266420e3a0797df7567ed61b1c646c6 100644 (file)
@@ -65,36 +65,29 @@ def func(parser, options, args):
     check_conflicts()
     check_head_top_equal()
 
     check_conflicts()
     check_head_top_equal()
 
-    orig_head = git_id('base')
-
+    # pop all patches
+    applied = crt_series.get_applied()
+    if len(applied) > 0:
+        print 'Popping all patches...',
+        sys.stdout.flush()
+        crt_series.pop_patch(applied[0])
+        print 'done'
+
+    # pull the remote changes
     print 'Pulling from "%s"...' % location
     print 'Pulling from "%s"...' % location
-    new_head = git.fetch(location, options.head, options.tag)
+    git.pull(location, options.head, options.tag)
     print 'done'
 
     print 'done'
 
-    if new_head == orig_head:
-        print 'Branch already up-to-date'
-    else:
-        write_string(os.path.join(git.base_dir, 'ORIG_HEAD'), orig_head)
-
-        applied = crt_series.get_applied()
-
-        if len(applied) > 0:
-            print 'Popping all patches...',
-            sys.stdout.flush()
-            crt_series.pop_patch(applied[0])
+    # push the patches back
+    if options.nopush:
+        applied = []
+    for p in applied:
+        print 'Pushing patch "%s"...' % p,
+        sys.stdout.flush()
+        crt_series.push_patch(p)
+        if crt_series.empty_patch(p):
+            print 'done (empty patch)'
+        else:
             print 'done'
 
             print 'done'
 
-        git.switch(new_head)
-
-        if options.nopush:
-            applied = []
-        for p in applied:
-            print 'Pushing patch "%s"...' % p,
-            sys.stdout.flush()
-            crt_series.push_patch(p)
-            if crt_series.empty_patch(p):
-                print 'done (empty patch)'
-            else:
-                print 'done'
-
     print_crt_patch()
     print_crt_patch()
index fdba68afa58d3f46f0cfee148cac862e3c4fb5b8..9d8cdf0d099f5d83f10cea6897680ecc0cb56ea0 100644 (file)
@@ -449,7 +449,7 @@ def switch(tree_id):
     for fs in to_delete:
         os.remove(fs[1])
 
     for fs in to_delete:
         os.remove(fs[1])
 
-def fetch(location, head = None, tag = None):
+def pull(location, head = None, tag = None):
     """Fetch changes from the remote repository. At the moment, just
     use the 'git fetch' scripts
     """
     """Fetch changes from the remote repository. At the moment, just
     use the 'git fetch' scripts
     """
@@ -459,11 +459,9 @@ def fetch(location, head = None, tag = None):
     elif tag:
         args += ['tag', tag]
 
     elif tag:
         args += ['tag', tag]
 
-    if __run('git fetch', args) != 0:
+    if __run('git pull', args) != 0:
         raise GitException, 'Failed "git fetch %s"' % location
 
         raise GitException, 'Failed "git fetch %s"' % location
 
-    return read_string(os.path.join(base_dir, 'FETCH_HEAD'))
-
 def apply_patch(filename = None):
     """Apply a patch onto the current index. There must not be any
     local changes in the tree, otherwise the command fails
 def apply_patch(filename = None):
     """Apply a patch onto the current index. There must not be any
     local changes in the tree, otherwise the command fails