Merge with trunk

This commit is contained in:
Luca Falavigna 2010-04-17 12:47:21 +02:00
commit abd7660c33
5 changed files with 81 additions and 92 deletions

View File

@ -31,5 +31,5 @@ _pbuilder-dist()
return 0 return 0
} }
[ "$have" ] && complete -F _pbuilder-dist -o filenames \ [ "$have" ] && complete -F _pbuilder-dist -o filenames \
{pbuilder,cowbuilder}-{dist,dapper,edgy,feisty,gutsy,hardy,intrepid,jaunty,karmic,lucid,sarge,etch,lenny,squeeze,sid} {pbuilder,cowbuilder}-{dist,dapper,edgy,feisty,gutsy,hardy,intrepid,jaunty,karmic,lucid,maverick,sarge,etch,lenny,squeeze,sid}
# Make it pbuilder-* if you know how to do it # Make it pbuilder-* if you know how to do it

View File

@ -47,7 +47,7 @@ EOM
exit(0); exit(0);
} }
my @releases = ('dapper', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid'); my @releases = ('dapper', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid', 'maverick');
#Getopt::Long::Configure("bundling", "no_ignore_case"); #Getopt::Long::Configure("bundling", "no_ignore_case");
our $opt_build_tree = "/scratch/ubuntu/build"; our $opt_build_tree = "/scratch/ubuntu/build";

22
debian/changelog vendored
View File

@ -1,4 +1,11 @@
ubuntu-dev-tools (0.98) UNRELEASED; urgency=low ubuntu-dev-tools (0.99) UNRELEASED; urgency=low
[ Luca Falavigna ]
* syncpackage: new script to easily upload pristine Debian packages.
-- Luca Falavigna <dktrkranz@ubuntu.com> Sat, 17 Apr 2010 12:46:34 +0200
ubuntu-dev-tools (0.98) lucid; urgency=low
[ Ryan Kavanagh ] [ Ryan Kavanagh ]
* Added the merge-changelog script from * Added the merge-changelog script from
@ -6,17 +13,24 @@ ubuntu-dev-tools (0.98) UNRELEASED; urgency=low
who need to manually merge packages. who need to manually merge packages.
* Fixed typo in doc/grab-merge.1 * Fixed typo in doc/grab-merge.1
[ Soren Hansen ]
* Update get-branches to account for changes in LP's web UI. Really, someone
should update it to use the LP API, but for now, this will have to do.
[ Emmet Hikory ] [ Emmet Hikory ]
* doc/mk-sbuild.1: add missing options to summary * doc/mk-sbuild.1: add missing options to summary
[ Michael Bienia ] [ Michael Bienia ]
* lp-shell: Use "udt-lp-shell" as LP API consumer instead of the non-unique * lp-shell: Use "udt-lp-shell" as LP API consumer instead of the non-unique
"test" (lp: #558531). "test" (lp: #558531).
* get-branches: Use the LP API to obtain a list of branches of a team.
[ Luca Falavigna ] [ Loïc Minier ]
* syncpackage: new script to easily upload pristine Debian packages. * bash_completion/pbuilder-dist, dch-repeat: list maverick in possible
Ubuntu dists; the default dist for reverse-build-depends and
submittodebian should be changed in maverick.
-- Luca Falavigna <dktrkranz@debian.org> Tue, 13 Apr 2010 23:17:22 +0200 -- Loïc Minier <loic.minier@ubuntu.com> Fri, 16 Apr 2010 12:58:22 +0200
ubuntu-dev-tools (0.97) lucid; urgency=low ubuntu-dev-tools (0.97) lucid; urgency=low

View File

@ -1,32 +1,39 @@
.TH GET\-BRANCHES "1" "11 August 2008" "ubuntu-dev-tools" .TH get\-branches "1" "11 August 2008" "ubuntu-dev-tools"
.SH NAME .SH NAME
get\-branches \- downloads all branches related to a Launchpad team or person get\-branches - downloads all branches related to a Launchpad team or person
.SH SYNOPSIS .SH SYNOPSIS
.B get\-branches [\-d directory] [\-o branch|checkout] \-t <team> .B get\-branches
.RB [ \-d
.IR directory ]
.RB [ \-o
.BR branch | checkout ]
.B \-t
.I team
.br .br
.B get\-branches <team> .B get\-branches
.I team
.br .br
.B get\-branches \-\-help .B get\-branches \-\-help
.SH DESCRIPTION .SH DESCRIPTION
\fBget\-branches\fR examines the code page of a Launchpad team/person, \fBget\-branches\fR uses the LP API to get a list of branches for a person or
parses it, and calls Bazaar to download all branches on that page. team and calls Bazaar to download all branches.
.SH OPTIONS .SH OPTIONS
Listed below are the command line options for \fBget\-branches\fR: Listed below are the command line options for \fBget\-branches\fR:
.TP .TP
.B \-h or \-\-help .BR \-h ", " \-\-help
Display a help message and exit. Display a help message and exit.
.TP .TP
.B \-d or \-\-directory .BR \-d ", " \-\-directory
Download branches to a directory other than the current directory. Download branches to a directory other than the current directory.
.TP .TP
.B \-o or \-\-operation .BR \-o ", " \-\-operation
Specifies which Bazaar operation to use when downloading the branches; may be Specifies which Bazaar operation to use when downloading the branches; may be
either \fIbranch\fR or \fIcheckout\fR. either \fIbranch\fR or \fIcheckout\fR.
.TP .TP
.B \-t or \-\-team .BR \-t ", " \-\-team
Specifies which Launchpad team/person to download branches from. Specifies which Launchpad team/person to download branches from.
This option is required. This option is required.

View File

@ -25,11 +25,10 @@
# #
import os import os
import re
import subprocess import subprocess
import sys import sys
import urllib2
from optparse import OptionParser from optparse import OptionParser
from ubuntutools.lp.lpapicache import PersonTeam
def main(): def main():
usage = "Usage: %prog [-d <directory>] -t <team> [-o <operation>]" usage = "Usage: %prog [-d <directory>] -t <team> [-o <operation>]"
@ -49,93 +48,62 @@ def main():
(options, args) = optParser.parse_args() (options, args) = optParser.parse_args()
# Fetch our current directory to return to later.
pwd = os.getcwd()
# Parse our options. # Parse our options.
if len(args) != 1 and options.lpteam == None: if len(args) != 1 and options.lpteam == None:
optParser.error("No team has been specified.") optParser.error("No team has been specified.")
# Launchpad team setting.
if options.lpteam:
team = str(options.lpteam).lower()
if args:
team = str(args[0]).lower()
directory = options.directory
# Dictionary settings. # Dictionary settings.
directory = options.directory
if not os.path.isdir(directory): # Check that it is a directory. if not os.path.isdir(directory): # Check that it is a directory.
optParser.error("%s is not a valid directory." % directory) optParser.error("%s is not a valid directory." % directory)
os.chdir(directory)
# Type of Bazaar operation to perform. # Type of Bazaar operation to perform.
operation_type = str(options.operation).lower() operation_type = options.operation.lower()
# Got an argument, check if it is valid.
if operation_type not in ("branch", "checkout"): if operation_type not in ("branch", "checkout"):
optParser.error("Invalid operation '%s' for '-o' flag." % \ optParser.error("Invalid operation '%s' for '-o' flag." % \
operation_type) operation_type)
# Launchpad team setting.
# Fetch our current directory to return to later. if options.lpteam:
pwd = os.getcwd() team = options.lpteam.lower()
if args:
# Change to the specified directory. team = args[0].lower()
os.chdir(directory)
# Try to open the teams code page.
try: try:
sock = urllib2.urlopen("https://code.launchpad.net/~%s" % team) team = PersonTeam(team)
except urllib2.HTTPError: except KeyError:
print >> sys.stderr, "The page https://code.launchpad.net/~%s does " \ print >> sys.stderr, "E: The team '%s' doesn't exist." % team
"not exist." % team
print >> sys.stderr, "Perhaps invalid team name?"
sys.exit(1)
branch_list_page = sock.read() # Get a list of branches
sock.close() branches = team.getBranches()
branch_page_urls_regex = r'.*href="/(~%s/.*)">lp:.*' % team print "Downloading all branches for the '%s' team. This may take some " \
branch_page_urls = re.findall(branch_page_urls_regex, branch_list_page) "time." % team.display_name
# Check the team actually has branches.
if len(branch_page_urls) == 0:
print "The team '%s' does not have any branches on Launchpad." % team
sys.exit(0)
print "Downloading all branches for the team '%s'. This may take some " \
"time." % team
try: try:
os.makedirs(team) os.makedirs(team.name)
except: except:
pass pass
os.chdir(team) os.chdir(team.name)
for url in branch_page_urls: for branch in branches:
sock = urllib2.urlopen("https://code.launchpad.net/%s" % url) project_name = branch.project.name
branch_page = sock.read() if not os.path.exists(project_name):
sock.close() os.makedirs(project_name)
os.chdir(project_name)
branch_url_regex = r'<dd>bzr branch <span.*>lp:(.*)</span></dd>' if not os.path.exists(branch.name):
branch_url = re.findall(branch_url_regex, branch_page) print "Branching %s ..." % branch.display_name
subprocess.call(["bzr", operation_type, branch.bzr_identity, branch.name])
if branch_url[0]:
print "Downloading branch: lp:%s (%s)." % (branch_url[0], url)
product = url.split("/")[-2]
branch_nick = url.split("/")[-1]
else: else:
continue print "Merging %s ..." % branch.display_name
os.chdir(branch.name)
print branch_nick, product, os.getcwd()
if not os.path.exists(product):
os.makedirs(product)
os.chdir(product)
if not os.path.exists(branch_nick):
subprocess.call(["bzr", operation_type, "lp:%s" % url])
else:
os.chdir(branch_nick)
subprocess.call(["bzr", "merge", "--pull", "--remember"]) subprocess.call(["bzr", "merge", "--pull", "--remember"])
os.chdir(os.path.join(directory, team)) os.chdir(os.path.join(directory, team.name))
os.chdir(pwd) os.chdir(pwd)
sys.exit(0) sys.exit(0)