chiark
/
gitweb
/
~ian
/
topgit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
tg import -s: Whitespace fix
[topgit.git]
/
tg-import.sh
diff --git
a/tg-import.sh
b/tg-import.sh
index 6a4f79ea27e0116814c271b03046a3f2eb874da4..2a24fbb96dfc7e0600416e0eb51bae5bb63a95be 100644
(file)
--- a/
tg-import.sh
+++ b/
tg-import.sh
@@
-5,7
+5,9
@@
# GPLv2
branch_prefix=t/
# GPLv2
branch_prefix=t/
+single=
ranges=
ranges=
+basedep=
## Parse options
## Parse options
@@
-13,10
+15,14
@@
ranges=
while [ -n "$1" ]; do
arg="$1"; shift
case "$arg" in
while [ -n "$1" ]; do
arg="$1"; shift
case "$arg" in
+ -d)
+ basedep="$1"; shift;;
-p)
branch_prefix="$1"; shift;;
-p)
branch_prefix="$1"; shift;;
+ -s)
+ single="$1"; shift;;
-*)
-*)
- echo "Usage: tg [...] import [-
p PREFIX] RANGE...
" >&2
+ echo "Usage: tg [...] import [-
d BASE_BRANCH] {[-p PREFIX] RANGE...|-s NAME COMMIT}
" >&2
exit 1;;
*)
ranges="$ranges $arg";;
exit 1;;
*)
ranges="$ranges $arg";;
@@
-24,6
+30,15
@@
while [ -n "$1" ]; do
done
done
+## Make sure our tree is clean
+
+git update-index --ignore-submodules --refresh || exit
+[ -z "$(git diff-index --cached --name-status -r --ignore-submodules HEAD --)" ] ||
+ die "the index is not clean"
+
+
+## Perform import
+
get_commit_msg()
{
commit="$1"
get_commit_msg()
{
commit="$1"
@@
-49,16
+64,22
@@
get_branch_name()
process_commit()
{
commit="$1"
process_commit()
{
commit="$1"
- branch_name=$(get_branch_name "$commit")
- info "---- Importing $commit to $branch_prefix$branch_name"
- tg create "$branch_prefix""$branch_name"
- git read-tree "$commit"
+ branch_name="$2"
+ info "---- Importing $commit to $branch_name"
+ tg create "$branch_name" $basedep
+ basedep=
+ git cherry-pick --no-commit "$commit"
get_commit_msg "$commit" > .topmsg
git add -f .topmsg .topdeps
git commit -C "$commit"
info "++++ Importing $commit finished"
}
get_commit_msg "$commit" > .topmsg
git add -f .topmsg .topdeps
git commit -C "$commit"
info "++++ Importing $commit finished"
}
+if [ -n "$single" ]; then
+ process_commit $ranges "$single"
+ exit
+fi
+
# nice arg verification stolen from git-format-patch.sh
for revpair in $ranges
do
# nice arg verification stolen from git-format-patch.sh
for revpair in $ranges
do
@@
-83,7
+104,7
@@
do
info "Merged already: $comment"
;;
*)
info "Merged already: $comment"
;;
*)
- process_commit "$rev"
+ process_commit "$rev"
"$branch_prefix$(get_branch_name "$rev")"
;;
esac
done
;;
esac
done