mirror of
https://github.com/git/git.git
synced 2024-11-16 22:14:53 +01:00
972b6fe746
The store operation was never useful because we needed to fetch the objects needed to complete the reference. Remove it. The fetch command fetch multiple references shortly to replace the lost "store" functionality in more a generic way. Signed-off-by: Junio C Hamano <junkio@cox.net>
100 lines
1.5 KiB
Bash
Executable file
100 lines
1.5 KiB
Bash
Executable file
#!/bin/sh
|
|
#
|
|
. git-sh-setup-script || die "Not a git archive"
|
|
|
|
usage () {
|
|
echo >&2 "usage: $0 [--heads] [--tags] <repository> <refs>..."
|
|
exit 1;
|
|
}
|
|
|
|
while case "$#" in 0) break;; esac
|
|
do
|
|
case "$1" in
|
|
-h|--h|--he|--hea|--head|--heads)
|
|
heads=heads; shift ;;
|
|
-t|--t|--ta|--tag|--tags)
|
|
tags=tags; shift ;;
|
|
--)
|
|
shift; break ;;
|
|
-*)
|
|
usage ;;
|
|
*)
|
|
break ;;
|
|
esac
|
|
done
|
|
|
|
case "$#" in 0) usage ;; esac
|
|
|
|
case ",$heads,$tags," in
|
|
,,,) heads=heads tags=tags other=other ;;
|
|
esac
|
|
|
|
. git-parse-remote "$1"
|
|
peek_repo="$_remote_repo"
|
|
shift
|
|
|
|
tmp=.ls-remote-$$
|
|
trap "rm -fr $tmp-*" 0 1 2 3 15
|
|
tmpdir=$tmp-d
|
|
|
|
case "$peek_repo" in
|
|
http://* | https://* )
|
|
if [ -n "$GIT_SSL_NO_VERIFY" ]; then
|
|
curl_extra_args="-k"
|
|
fi
|
|
curl -nsf $curl_extra_args "$peek_repo/info/refs" || exit 1
|
|
;;
|
|
|
|
rsync://* )
|
|
mkdir $tmpdir
|
|
rsync -rq "$peek_repo/refs" $tmpdir || exit 1
|
|
(cd $tmpdir && find refs -type f) |
|
|
while read path
|
|
do
|
|
cat "$tmpdir/$path" | tr -d '\012'
|
|
echo " $path"
|
|
done &&
|
|
rm -fr $tmpdir
|
|
;;
|
|
|
|
* )
|
|
git-peek-remote "$peek_repo"
|
|
;;
|
|
esac |
|
|
sort -t ' ' -k 2 |
|
|
while read sha1 path
|
|
do
|
|
case "$path" in
|
|
refs/heads/*)
|
|
group=heads ;;
|
|
refs/tags/*)
|
|
group=tags ;;
|
|
*)
|
|
group=other ;;
|
|
esac
|
|
case ",$heads,$tags,$other," in
|
|
*,$group,*)
|
|
;;
|
|
*)
|
|
continue;;
|
|
esac
|
|
case "$#" in
|
|
0)
|
|
match=yes ;;
|
|
*)
|
|
match=no
|
|
for pat
|
|
do
|
|
case "/$path" in
|
|
*/$pat )
|
|
match=yes
|
|
break ;;
|
|
esac
|
|
done
|
|
esac
|
|
case "$match" in
|
|
no)
|
|
continue ;;
|
|
esac
|
|
echo "$sha1 $path"
|
|
done
|