Mercurial > gub
changeset 3447:f84117f3837e
Document further brokenness/changes of repository.
author | Jan Nieuwenhuizen <janneke@gnu.org> |
---|---|
date | Mon, 07 May 2007 15:27:24 +0200 |
parents | 537fb4f75270 |
children | d226617e202e |
files | TODO gub/repository.py |
diffstat | 2 files changed, 44 insertions(+), 25 deletions(-) [+] |
line wrap: on
line diff
--- a/TODO Mon May 07 15:24:17 2007 +0200 +++ b/TODO Mon May 07 15:27:24 2007 +0200 @@ -1,3 +1,9 @@ +* Make test-gub work with plain, user-checked-out repositories again + (and/or remove lilypond hardcoding from cron-builder, move checkout + command from cron-builder to separate app (or into test-gub)). + Add option to send diffs again. + + * Softcode stages. * move Scons, Bjam recipes to gub lib.
--- a/gub/repository.py Mon May 07 15:24:17 2007 +0200 +++ b/gub/repository.py Mon May 07 15:27:24 2007 +0200 @@ -561,19 +561,19 @@ return self.revision == 'HEAD' def update_workdir (self, destdir): - working = self._checkout_dir () - self._copy_working_dir (working, destdir) + dir = self._checkout_dir () + self._copy_working_dir (dir, destdir) def download (self): - working = self._checkout_dir () - if not os.path.isdir (working + '/' + self.repository): + dir = self._checkout_dir () + if not os.path.isdir (dir + '/' + self.repository): self._checkout () if self._current_revision () != self.revision: - self._update (working, self.revision) + self._update (self.revision) - def _copy_working_dir (self, working, copy): + def _copy_working_dir (self, dir, copy): repository = self.repository - self.system ('rsync -av --exclude %(repository)s %(working)s/ %(copy)s' + self.system ('rsync -av --exclude %(repository)s %(dir)s/ %(copy)s' % locals ()) def _checkout_dir (self): @@ -599,8 +599,8 @@ self.module = module def _current_revision (self): - working = self._checkout_dir () - revno = self.read_pipe ('cd %(working)s && svn info' % locals ()) + dir = self._checkout_dir () + revno = self.read_pipe ('cd %(dir)s && svn info' % locals ()) m = re.search ('.*Revision: ([0-9]*).*', revno) assert m return m.group (1) @@ -615,9 +615,10 @@ cmd = 'cd %(dir)s && svn co %(rev_opt)s %(source)s/%(branch)s/%(module)s %(branch)s-%(revision)s''' % locals () self.system (cmd) - def _update (self, working, revision): + def _update (self, revision): + dir = self._checkout_dir () rev_opt = '-r %(revision)s ' % locals () - cmd = 'cd %(working)s && svn up %(rev_opt)s' % locals () + cmd = 'cd %(dir)s && svn up %(rev_opt)s' % locals () self.system (cmd) class Bazaar (SimpleRepo): @@ -626,24 +627,31 @@ SimpleRepo.__init__ (self, dir, '.bzr', source, '', revision) def _current_revision (self): - working = self._checkout_dir () - revno = self.read_pipe ('cd %(working)s && bzr revno' % locals ()) + revno = self.bzr_pipe ('revno' % locals ()) assert revno return revno[:-1] def _checkout (self): - dir = self.dir source = self.source revision = self.revision rev_opt = '-r %(revision)s ' % locals () - cmd = ('cd %(dir)s && bzr branch %(rev_opt)s %(source)s %(revision)s''' - % locals ()) - self.system (cmd) + self.system ('''branch %(rev_opt)s %(source)s %(revision)s''' + % locals ()) - def _update (self, working, revision): + def _update (self, revision): rev_opt = '-r %(revision)s ' % locals () - cmd = 'cd %(working)s && bzr pull %(rev_opt)s' % locals () - self.system (cmd) + self.bzr_system ('pull %(rev_opt)s' % locals ()) + + def bzr_pipe (self, cmd): + dir = self._checkout_dir () + return self.read_pipe ('cd %(dir)s && bzr %(cmd)s' % locals ()) + + def bzr_system (self, cmd): + dir = self._checkout_dir () + return self.system ('cd %(dir)s && bzr %(cmd)s' % locals ()) + + def get_revision_description (self): + return self.bzr_pipe ('log --verbose -r-1') # FIXME: repository detection AND repositories only work if they are # checked-out in a dir named .../name.REPOSITORY Eg, for GIT, this @@ -656,10 +664,15 @@ # not an existing directory, it gets `.REPOSITORY' appended in the # constructors. -# For test-gub to work outside gub again, for now use the -# workaround -# bzr branch xxx foo.BZR -# cd foo.BZR && test-gub --repository $(pwd) +# Also, different revisions get checked-out in different directories: +#, eg: foo.svn/trunk-7111, foo.svn/trunk-HEAD, etc. + +# For test-gub to work outside gub again, for now use a workaround +# like +# mkdir foo.bzr && cd foo.bzr +# bzr branch URL HEAD +# cd HEAD && mkdir log +# test-gub --repository $(cd .. && pwd) def get_repository_proxy (dir, branch): m = re.search (r"(.*)\.(bzr|git|cvs|svn|darcs)", dir) @@ -669,7 +682,7 @@ type = m.group (2) if type == 'bzr': - return Bazaar (dir, branch=branch) + return Bazaar (dir, source='unknown') elif type == 'cvs': return CVS (dir, branch=branch) elif type == 'darcs':