summaryrefslogtreecommitdiffstats
path: root/scripts/feeds
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2010-12-06 16:57:25 +0000
committerFelix Fietkau <nbd@openwrt.org>2010-12-06 16:57:25 +0000
commit3945267a9959321fa966d4cc9d87b02f82d34a32 (patch)
treeecc448553f594db56d15e349a188ede1f528fdf3 /scripts/feeds
parent163c4241874cacc4471ab5770593eb566518916c (diff)
downloadmaster-31e0f0ae-3945267a9959321fa966d4cc9d87b02f82d34a32.tar.gz
master-31e0f0ae-3945267a9959321fa966d4cc9d87b02f82d34a32.tar.bz2
master-31e0f0ae-3945267a9959321fa966d4cc9d87b02f82d34a32.zip
scripts/feeds: support checking out git trees with different branches
SVN-Revision: 24285
Diffstat (limited to 'scripts/feeds')
-rwxr-xr-xscripts/feeds8
1 files changed, 7 insertions, 1 deletions
diff --git a/scripts/feeds b/scripts/feeds
index 84f97feeb6..9f773df9ed 100755
--- a/scripts/feeds
+++ b/scripts/feeds
@@ -114,6 +114,7 @@ my %update_method = (
'update' => ""},
'src-git' => {
'init' => "git clone --depth 1 '%s' '%s'",
+ 'init_branch' => "git clone --depth 1 --branch '%s' '%s' '%s'",
'update' => "git pull",
'controldir' => ".git"},
'src-bzr' => {
@@ -143,10 +144,15 @@ sub update_feed_via($$$$) {
my $localpath = "./feeds/$name";
my $safepath = $localpath;
$safepath =~ s/'/'\\''/;
+ my ($base, $branch) = split(/;/, $src, 2);
if( $relocate || !$m->{'update'} || !-d "$localpath/$m->{'controldir'}" ) {
system("rm -rf '$safepath'");
- system(sprintf($m->{'init'}, $src, $safepath)) == 0 or return 1;
+ if ($m->{'init_branch'} and $branch) {
+ system(sprintf($m->{'init_branch'}, $branch, $base, $safepath)) == 0 or return 1;
+ } else {
+ system(sprintf($m->{'init'}, $src, $safepath)) == 0 or return 1;
+ }
} else {
system("cd '$safepath'; $m->{'update'}") == 0 or return 1;
}