scripts/feeds: merge git branch support from r24285
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Mon, 6 Dec 2010 19:59:55 +0000 (19:59 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Mon, 6 Dec 2010 19:59:55 +0000 (19:59 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@24289 3c298f89-4303-0410-b956-a3cf2f4a3e73

scripts/feeds

index 43c5c6dc43d2e691c0ee283b6651808d58a46ea4..e623451c6a840c1400ec116d94cafc28c27d1b1d 100755 (executable)
@@ -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' => {
@@ -139,10 +140,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;
        }