feeds: enable cloning of specific git commit
Following syntax should be used to enable this feature: src-git custom git://openwrt/custom-feed^SHA_COMMIT_ID Signed-off-by: Luka Perkov <luka@openwrt.org> SVN-Revision: 38172
This commit is contained in:
parent
59c05778f0
commit
49722e7dcb
1 changed files with 8 additions and 2 deletions
|
@ -119,6 +119,7 @@ my %update_method = (
|
||||||
'src-git' => {
|
'src-git' => {
|
||||||
'init' => "git clone --depth 1 '%s' '%s'",
|
'init' => "git clone --depth 1 '%s' '%s'",
|
||||||
'init_branch' => "git clone --depth 1 --branch '%s' '%s' '%s'",
|
'init_branch' => "git clone --depth 1 --branch '%s' '%s' '%s'",
|
||||||
|
'init_commit' => "git clone '%s' '%s' && cd '%s' && git checkout -b '%s' '%s' && cd -",
|
||||||
'update' => "git pull --ff",
|
'update' => "git pull --ff",
|
||||||
'controldir' => ".git",
|
'controldir' => ".git",
|
||||||
'revision' => "git show --abbrev-commit HEAD | head -n 1 | cut -d ' ' -f 2 | tr -d '\n'"},
|
'revision' => "git show --abbrev-commit HEAD | head -n 1 | cut -d ' ' -f 2 | tr -d '\n'"},
|
||||||
|
@ -154,15 +155,20 @@ sub update_feed_via($$$$) {
|
||||||
my $localpath = "./feeds/$name";
|
my $localpath = "./feeds/$name";
|
||||||
my $safepath = $localpath;
|
my $safepath = $localpath;
|
||||||
$safepath =~ s/'/'\\''/;
|
$safepath =~ s/'/'\\''/;
|
||||||
my ($base, $branch) = split(/;/, $src, 2);
|
my ($base_branch, $branch) = split(/;/, $src, 2);
|
||||||
|
my ($base_commit, $commit) = split(/\^/, $src, 2);
|
||||||
|
|
||||||
if( $relocate || !$m->{'update'} || !-d "$localpath/$m->{'controldir'}" ) {
|
if( $relocate || !$m->{'update'} || !-d "$localpath/$m->{'controldir'}" ) {
|
||||||
system("rm -rf '$safepath'");
|
system("rm -rf '$safepath'");
|
||||||
if ($m->{'init_branch'} and $branch) {
|
if ($m->{'init_branch'} and $branch) {
|
||||||
system(sprintf($m->{'init_branch'}, $branch, $base, $safepath)) == 0 or return 1;
|
system(sprintf($m->{'init_branch'}, $branch, $base_branch, $safepath)) == 0 or return 1;
|
||||||
|
} elsif ($m->{'init_commit'} and $commit) {
|
||||||
|
system(sprintf($m->{'init_commit'}, $base_commit, $safepath, $safepath, $commit, $commit)) == 0 or return 1;
|
||||||
} else {
|
} else {
|
||||||
system(sprintf($m->{'init'}, $src, $safepath)) == 0 or return 1;
|
system(sprintf($m->{'init'}, $src, $safepath)) == 0 or return 1;
|
||||||
}
|
}
|
||||||
|
} elsif ($m->{'init_commit'} and $commit) {
|
||||||
|
# in case git hash has been provided don't update the feed
|
||||||
} else {
|
} else {
|
||||||
system("cd '$safepath'; $m->{'update'}") == 0 or return 1;
|
system("cd '$safepath'; $m->{'update'}") == 0 or return 1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue