set() is not a builtin function in Python 2.3
[stgit] / stgit / git.py
index 038aaac..c7cc6a7 100644 (file)
@@ -23,6 +23,7 @@ import sys, os, popen2, re, gitmergeonefile
 from stgit import basedir
 from stgit.utils import *
 from stgit.config import config
+from sets import Set
 
 # git exception class
 class GitException(Exception):
@@ -808,18 +809,23 @@ def reset(files = None, tree_id = None, check_out = True):
         __set_head(tree_id)
 
 def pull(repository = 'origin', refspec = None):
-    """Pull changes from the remote repository. At the moment, just
-    use the 'git-pull' command
+    """Pull changes from the remote repository. Uses 'git-fetch'
+    and moves the stack base.
     """
-    # 'git-pull' updates the HEAD
+    # we update the HEAD
     __clear_head_cache()
 
     args = [repository]
     if refspec:
         args.append(refspec)
 
-    if __run(config.get('stgit.pullcmd'), args) != 0:
-        raise GitException, 'Failed "git-pull %s"' % repository
+    command = config.get('stgit.pullcmd')
+    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,9 +914,9 @@ def remotes_list():
     """Return the list of remotes in the repository
     """
 
-    return set(__remotes_from_config()) | \
-           set(__remotes_from_dir('remotes')) | \
-           set(__remotes_from_dir('branches'))
+    return Set(__remotes_from_config()) | \
+           Set(__remotes_from_dir('remotes')) | \
+           Set(__remotes_from_dir('branches'))
 
 def remotes_local_branches(remote):
     """Returns the list of local branches fetched from given remote