2 # archives2git - generate a Git history from a series of release tarballs
3 # Copyright © 2013 Géraud Meyer <graud@gmx.com>
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License version 2 as
7 # published by the Free Software Foundation.
9 # This program is distributed in the hope that it will be useful, but
10 # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 # You should have received a copy of the GNU General Public License along
15 # with this program. If not, see <http://www.gnu.org/licenses/>.
17 PROGRAM_NAME
="archives2git"
20 # archives2git [<options>] [--] <archives>
24 GIT_WORK_TREE
=${GIT_WORK_TREE-.}
36 shift; GIT_WORK_TREE
=$1 ;;
46 shift; ARGS
="$ARGS $1" ;;
48 echo "$PROGRAM_NAME version $PROGRAM_VERSION"
51 echo "$0: unknown option $1" >&2
65 # git repository check
66 cd "$GIT_WORK_TREE" &&
67 { test -d .git || git rev-parse
--git-dir >/dev
/null
; } ||
69 echo "$0: error not in a git repository" >&2
72 test -z "$(git status --porcelain)" &&
73 git update-index
-q --refresh ||
75 echo "$0: unstaged files or dirty index" >&2
84 aunpack
-X "$TMPDIR" "$arch"
88 [ -e "$file" ] ||
continue
89 [ "$file" = "." -o "$file" = ".." -o "$file" = ".git" ] && continue
90 eval "$FILTER" ||
( git
rm -r "$file" ||
rm -R "$file" )
92 for file in "$TMPDIR"/* "$TMPDIR"/.
*
94 [ -e "$file" ] ||
continue
96 [ "$file" = "." -o "$file" = ".." ] && continue
97 name
=$
(eval "$RENAME")
100 [ ! -e .
/"$name" ] ||
rm -R .
/"$name"
101 mv "$TMPDIR"/"$file" .
/"$name"
104 rm -R "$TMPDIR"/"$file"
107 git commit
-m "$(eval "$TITLE")${BODY:+$NL$BODY}" \
108 ${DATE:+--date "$(eval "$DATE")"} $ARGS