415 | 415 |
|
416 | 416 |
shelf_populate_from_git() {
|
417 | 417 |
git_prefix="$1"
|
|
418 |
failures=""
|
418 | 419 |
while read -r line; do
|
419 | 420 |
project=`echo $line | awk '{split($0,a,"@"); print a[1]}'`
|
420 | 421 |
tag=`echo $line | awk '{split($0,a,"@"); print a[2]}'`
|
|
425 | 426 |
dest=`basename $url`
|
426 | 427 |
|
427 | 428 |
if [ ! -d $dest ]; then
|
428 | |
echo -n "$dest: " && git clone $url $dest
|
|
429 |
(echo -n "$dest: " && git clone $url $dest)
|
|
430 |
if [ $? -ne 0 ]; then
|
|
431 |
failures="$failures $dest"
|
|
432 |
fi
|
429 | 433 |
fi
|
430 | 434 |
|
431 | 435 |
branch=`cd $dest && git rev-parse --abbrev-ref HEAD`
|
432 | 436 |
if [ "X$branch" != "XHEAD" ]; then
|
433 | 437 |
(echo -n "$dest: " && cd $dest && git pull)
|
|
438 |
if [ $? -ne 0 ]; then
|
|
439 |
failures="$failures $dest"
|
|
440 |
fi
|
434 | 441 |
fi
|
435 | 442 |
|
436 | 443 |
if [ "X$tag" != X ]; then
|
437 | 444 |
(echo -n "$dest: " && cd $dest && git checkout $tag)
|
438 | |
fi
|
439 | |
done
|
|
445 |
if [ $? -ne 0 ]; then
|
|
446 |
failures="$failures $dest"
|
|
447 |
fi
|
|
448 |
fi
|
|
449 |
done
|
|
450 |
|
|
451 |
if [ "X$failures" = X ]; then
|
|
452 |
return 0
|
|
453 |
else
|
|
454 |
echo "shelf_populate_from_git failed! Failures: ($failures)"
|
|
455 |
return 1
|
|
456 |
fi
|
440 | 457 |
}
|
441 | 458 |
|
442 | 459 |
shelf_mirror_from_git() {
|
|
460 | 477 |
|
461 | 478 |
while read -r line; do
|
462 | 479 |
project=`echo $line | awk '{split($0,a,"@"); print a[1]}'`
|
463 | |
tag=`echo $line | awk '{split($0,a,"@"); print a[2]}'`
|
|
480 |
if [ "X$SHELF_CAST_REF" != X ]; then
|
|
481 |
tag="$SHELF_CAST_REF"
|
|
482 |
else
|
|
483 |
tag=`echo $line | awk '{split($0,a,"@"); print a[2]}'`
|
|
484 |
fi
|
464 | 485 |
|
465 | 486 |
dest_project=$project
|
466 | 487 |
if [ "X$SHELF_LOWERCASE" != X ]; then
|
|
468 | 489 |
fi
|
469 | 490 |
|
470 | 491 |
rm -rf "$projection_dir/$dest_project"
|
471 | |
(echo "$projection_dir/$dest_project" && cd $project && git archive --format=tar --prefix=$dest_project/ HEAD | (cd $projection_dir && tar xf -) )
|
|
492 |
(echo "$projection_dir/$dest_project" && cd $project && git archive --format=tar --prefix=$dest_project/ $tag | (cd $projection_dir && tar xf -) )
|
472 | 493 |
done
|
473 | 494 |
}
|
474 | 495 |
|
475 | 496 |
shelf_pin() {
|
|
497 |
failures=""
|
476 | 498 |
while read -r line; do
|
477 | 499 |
project=`echo $line | awk '{split($0,a,"@"); print a[1]}'`
|
478 | 500 |
tag=`echo $line | awk '{split($0,a,"@"); print a[2]}'`
|
|
481 | 503 |
if [ -d $dest ]; then
|
482 | 504 |
if [ "X$tag" != X ]; then
|
483 | 505 |
(echo -n "$dest: " && cd $dest && git checkout $tag)
|
484 | |
fi
|
485 | |
fi
|
486 | |
done
|
|
506 |
if [ $? -ne 0 ]; then
|
|
507 |
failures="$failures $dest"
|
|
508 |
fi
|
|
509 |
fi
|
|
510 |
fi
|
|
511 |
done
|
|
512 |
if [ "X$failures" = X ]; then
|
|
513 |
return 0
|
|
514 |
else
|
|
515 |
echo "shelf_pin failed! Failures: ($failures)"
|
|
516 |
return 1
|
|
517 |
fi
|
487 | 518 |
}
|
488 | 519 |
|
489 | 520 |
shelf_unpin() {
|