5 if [ "$1" = "-batch" ]; then
14 if [ $# -lt 1 -o $# -gt 3 ]; then
16 Usage: $0 [-batch] archive.tar.gz [git_url [git_branch]]
22 if [ ! -r "$archive" ]; then
23 printf 'File not found: %s\n' "$archive"
29 gitbranch=${3:-master}
31 giturl=$(git rev-parse --show-toplevel)
32 gitbranch=$(git branch | sed -n '/^\*/{s/^..//;p;}')
36 trap "rm -fr \"$tmpdir\"" EXIT
41 myname=$(type -p "$0")
44 exclude="$myname.exclude"
47 exclude="$PWD/$myname.exclude"
51 if [ ! -r "$exclude" ]; then
52 printf 'File not found: %s\n' "$exclude"
56 echo "Exclude patterns extracted from file: $exclude"
58 echo "Extracting archive: $archive -> $arch_dir"
59 tar --directory "$tmpdir" \
60 --transform 's!^[^/]*!a!' \
61 --extract --gunzip --file "$archive"
63 echo "Copying git repository: $giturl/$gitbranch -> $git_dir"
64 git archive --format=tar --prefix="b/" --remote="$giturl" "$gitbranch" \
65 | tar --directory "$tmpdir" --extract --file -
71 sed -n '/^-/{s/^- //;p;}' "$exclude" > ea
72 sed -n '/^+/{s/^+ //;p;}' "$exclude" > eb
76 | grep -E -v -x -f ea \
80 | grep -E -v -x -f eb \
84 if cmp -s "$fa" "$fb"; then
86 echo "The archive looks good."
89 echo "Some files are missing and/or unexpected in the archive."
94 colordiff=$(type -p colordiff)
96 if [ -x "$colordiff" ]; then
97 "$colordiff" | less -R -F -X
103 if [ "$interactive" = "1" ]; then