[projects/git-slug: 151/170] First version of pull command

glen glen at pld-linux.org
Mon Sep 21 21:51:30 CEST 2015


commit 8db32471cf41e9603b349c559f39ea4c1b162227
Author: Kacper Kornet <draenog at pld-linux.org>
Date:   Mon Nov 19 16:53:33 2012 +0000

    First version of pull command

 slug.py | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)
---
diff --git a/slug.py b/slug.py
index 6a549c0..ce162f0 100755
--- a/slug.py
+++ b/slug.py
@@ -179,6 +179,30 @@ def clone_packages(options):
         except GitRepoError as e:
             print('Problem with checking branch master in repo {}: {}'.format(repo.gdir, e), file=sys.stderr)
 
+def pull_packages(options):
+    repolist = []
+    if options.updateall:
+        pkgs = fetch_packages(options, True)
+        for directory in sorted(os.listdir(options.packagesdir)):
+            if directory in pkgs:
+                repolist.append(GitRepo(os.path.join(options.packagesdir, directory)))
+    else:
+        repolist = fetch_packages(options, False)
+    print('--------Pulling------------')
+    for gitrepo in repolist:
+        directory = os.path.basename(gitrepo.wtree)
+        try:
+            (out, err) = gitrepo.commandexc(['rev-parse', '-q', '--verify', '@{u}'])
+            sha1 = out.decode().strip()
+            (out, err) = gitrepo.commandexc(['rebase', sha1])
+            for line in out.decode().splitlines():
+                print(directory,":",line)
+        except GitRepoError as e:
+            for line in e.args[0].splitlines():
+                print("{}: {}".format(directory,line))
+            pass
+
+
 def list_packages(options):
     refs = getrefs(options.branch, options.repopattern)
     for package in sorted(refs.heads):
@@ -221,6 +245,12 @@ fetch = subparsers.add_parser('fetch', help='fetch repositories', parents=[commo
         formatter_class=argparse.ArgumentDefaultsHelpFormatter)
 fetch.set_defaults(func=fetch_packages, branch='[*]', prune=False, newpkgs=False, omitexisting=False)
 
+pull = subparsers.add_parser('pull', help='git-pull in all existing repositories', parents=[common_fetchoptions],
+        formatter_class=argparse.RawDescriptionHelpFormatter)
+pull.add_argument('--all', help='update local branches in all repositories', dest='updateall', action='store_true', default=True)
+pull.add_argument('--noall', help='update local branches only when something has been fetched', dest='updateall', action='store_false', default=True)
+pull.set_defaults(func=pull_packages, branch='[*]', prune=False, newpkgs=False, omitexisting=False)
+
 checkout =subparsers.add_parser('checkout', help='checkout repositories', parents=[common_fetchoptions],
         formatter_class=argparse.ArgumentDefaultsHelpFormatter)
 checkout.add_argument('-b', '--branch', help='branch to fetch', action=DelAppend, default=['master'])
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/projects/git-slug.git/commitdiff/4ed64f73960519a2f4fd04c42950b2c96ae795c5



More information about the pld-cvs-commit mailing list