[projects/git-slug: 4/170] Wrap code to fetch packages into function
glen
glen at pld-linux.org
Mon Sep 21 21:39:09 CEST 2015
commit 1b80888f9eee05fe7ead7740696569e19b791f22
Author: Kacper Kornet <draenog at pld-linux.org>
Date: Sat Sep 10 05:58:39 2011 +0100
Wrap code to fetch packages into function
It will allow for adding other functionalities to the program.
slug.py | 100 +++++++++++++++++++++++++++++++++-------------------------------
1 file changed, 52 insertions(+), 48 deletions(-)
---
diff --git a/slug.py b/slug.py
index d61be1d..201046c 100755
--- a/slug.py
+++ b/slug.py
@@ -15,7 +15,6 @@ from gitconst import *
from gitrepo import GitRepo, GitRepoError
from refsdata import *
-fetch_queue = Queue.Queue()
class ThreadFetch(threading.Thread):
def __init__(self, queue, dir, depth=0):
@@ -47,6 +46,57 @@ def initpackage(name, options):
repo.init(os.path.join(GIT_REPO,name), remotepush)
return repo
+def fetch_packages(options):
+ fetch_queue = Queue.Queue()
+ for i in range(options.j):
+ t = ThreadFetch(fetch_queue, options.packagesdir, options.depth)
+ t.setDaemon(True)
+ t.start()
+
+ signal.signal(signal.SIGINT, signal.SIG_DFL)
+
+ try:
+ refs = GitRemoteRefsData(options.remoterefs, options.branch, options.dirpattern)
+ except GitRepoError as e:
+ print >> sys.stderr, 'Cannot create repository {}'.format(e)
+ sys.exit()
+ except RemoteRefsError as e:
+ print >> sys.stderr, 'Problem with file {} in repository {}'.format(*e)
+ sys.exit()
+
+
+ print 'Read remotes data'
+ for dir in sorted(refs.heads):
+ gitdir = os.path.join(options.packagesdir, dir, '.git')
+ if not os.path.isdir(gitdir):
+ if options.newpkgs:
+ gitrepo = initpackage(dir, options)
+ else:
+ continue
+ else:
+ gitrepo = GitRepo(os.path.join(options.packagesdir, dir))
+ ref2fetch = []
+ for ref in refs.heads[dir]:
+ if gitrepo.check_remote(ref) != refs.heads[dir][ref]:
+ ref2fetch.append('+{}:{}/{}'.format(ref, REMOTEREFS, ref[len('refs/heads/'):]))
+ if ref2fetch:
+ fetch_queue.put((dir, ref2fetch))
+
+ fetch_queue.join()
+
+ if options.prune:
+ try:
+ refs = GitRemoteRefsData(options.remoterefs, '*')
+ except RemoteRefsError as e:
+ print >> sys.stderr, 'Problem with file {} in repository {}'.format(*e)
+ sys.exit()
+ for fulldir in glob.iglob(os.path.join(options.packagesdir,options.dirpattern)):
+ dir = os.path.basename(fulldir)
+ if len(refs.heads[dir]) == 0 and os.path.isdir(os.path.join(fulldir, '.git')):
+ print 'Removing', fulldir
+ shutil.rmtree(fulldir)
+
+
parser = argparse.ArgumentParser(description='PLD tool for interaction with git repos',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('-b', '--branch', help='branch to fetch', default = 'master')
@@ -62,50 +112,4 @@ parser.add_argument('-u', '--user', help='the user name to register for pushes f
parser.add_argument('dirpattern', nargs='?', default = '*')
options = parser.parse_args()
-for i in range(options.j):
- t = ThreadFetch(fetch_queue, options.packagesdir, options.depth)
- t.setDaemon(True)
- t.start()
-
-signal.signal(signal.SIGINT, signal.SIG_DFL)
-
-try:
- refs = GitRemoteRefsData(options.remoterefs, options.branch, options.dirpattern)
-except GitRepoError as e:
- print >> sys.stderr, 'Cannot create repository {}'.format(e)
- sys.exit()
-except RemoteRefsError as e:
- print >> sys.stderr, 'Problem with file {} in repository {}'.format(*e)
- sys.exit()
-
-
-print 'Read remotes data'
-for dir in sorted(refs.heads):
- gitdir = os.path.join(options.packagesdir, dir, '.git')
- if not os.path.isdir(gitdir):
- if options.newpkgs:
- gitrepo = initpackage(dir, options)
- else:
- continue
- else:
- gitrepo = GitRepo(os.path.join(options.packagesdir, dir))
- ref2fetch = []
- for ref in refs.heads[dir]:
- if gitrepo.check_remote(ref) != refs.heads[dir][ref]:
- ref2fetch.append('+{}:{}/{}'.format(ref, REMOTEREFS, ref[len('refs/heads/'):]))
- if ref2fetch:
- fetch_queue.put((dir, ref2fetch))
-
-fetch_queue.join()
-
-if options.prune:
- try:
- refs = GitRemoteRefsData(options.remoterefs, '*')
- except RemoteRefsError as e:
- print >> sys.stderr, 'Problem with file {} in repository {}'.format(*e)
- sys.exit()
- for fulldir in glob.iglob(os.path.join(options.packagesdir,options.dirpattern)):
- dir = os.path.basename(fulldir)
- if len(refs.heads[dir]) == 0 and os.path.isdir(os.path.join(fulldir, '.git')):
- print 'Removing', fulldir
- shutil.rmtree(fulldir)
+fetch_packages(options)
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/projects/git-slug.git/commitdiff/4ed64f73960519a2f4fd04c42950b2c96ae795c5
More information about the pld-cvs-commit
mailing list