Re: [TopGit PATCH 2/2] tg-import.sh: A dump quilt queue importer
From: Petr Baudis <hidden>
Date: 2016-06-15 22:45:07
On Fri, Aug 08, 2008 at 08:19:48PM +0200, Bert Wesarg wrote:
quoted hunk ↗ jump to hunk
A simple, non smart, quilt importer. Signed-off-by: Bert Wesarg <redacted> --- .gitignore | 2 + Makefile | 3 +- README | 15 ++++++++ tg-import.sh | 115 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 134 insertions(+), 1 deletions(-)diff --git a/.gitignore b/.gitignore index 6f0727f..5f1831b 100644 --- a/.gitignore +++ b/.gitignore@@ -3,6 +3,8 @@ tg-create tg-create.txt tg-delete tg-delete.txt +tg-import +tg-import.txt tg-info tg-info.txt tg-patchdiff --git a/Makefile b/Makefile index dba5f20..671beab 100644 --- a/Makefile +++ b/Makefile@@ -6,7 +6,8 @@ sharedir = $(PREFIX)/share/topgit hooksdir = $(cmddir)/hooks -commands_in = tg-create.sh tg-delete.sh tg-info.sh tg-patch.sh tg-summary.sh tg-update.sh +commands_in = tg-create.sh tg-delete.sh tg-info.sh tg-patch.sh tg-summary.sh \ + tg-update.sh tg-import.sh hooks_in = hooks/pre-commit.sh commands_out = $(patsubst %.sh,%,$(commands_in))diff --git a/README b/README index dc0045f..3fc6d18 100644 --- a/README +++ b/README@@ -275,6 +275,21 @@ tg update TODO: tg update -a for updating all topic branches +tg import +~~~~~~~~~ + Import a quilt queue into TopGit. First argument is the series + file from quilt. Second is the prefix for the topic names + (i.e. "t/"). All remaining arguments are the dependencies for + the first patch in the series.
Sensible usage, but I'm not happy with making tg import quilt-only; what if we will say want to import to topgit from existing branches, or from StGIT or something else? The command name is good, but maybe I'd add a required --quilt switch. After all, this is not a command you run three times a day by hand.
+ Use '-s' if you want to strip + common patch suffixes from the patch file name (like .diff and + .patch).
When *wouldn't* we want to do this? Doesn't it make sense to make this the default?
quoted hunk ↗ jump to hunk
diff --git a/tg-import.sh b/tg-import.sh new file mode 100644 index 0000000..f9403b9 --- /dev/null +++ b/tg-import.sh
I think the functionality is good to have, but you are also reinventing the wheel here. Git can already import quilt series by git-quiltimport. So what about a more general approach? * Build tg-import so that it primarily just imports given set of existing commits. * Then, StGIT and Quilt importers are trivial extensions?
+ # strip suffixes
+ name="$patch"
+ [ -n "$strip_suffixes" ] && {
+ name="${name%.patch}"
+ name="${name%.diff}"
+ }I think in these cases, it's better style to use plain if.
+ # apply patch + # be stupid, hard coded -p1 + # currently no support for compressed patch files + patch -p1 -d "$root_dir" < "$patchfile" + + # extract header from patch file and feed it into .topmsg + # TODO: extract mail headers + cat "$patchfile" | + patch_header | + strip_diffstat | + make_topmsg "$name" > "$root_dir/.topmsg" + # overwrite .topmsg from tg create in index + git add "$root_dir/.topmsg" + + # add all modified files from patch to index + # (and prepending it with $root_dir) + # be stupid, hard coded -p1 --strip=1 + lsdiff --strip=1 "$patchfile" | + sed -e "s/^/$root_dir_esc\//" | + xargs git add
lsdiff? I don't have this tool. And this won't work with file removals properly anyway. I guess git add -u is too new for us, so you might opt for this snippet I've used in git-filter-branch: ( git diff-index -r --name-only HEAD git ls-files --others ) | git update-index --add --replace --remove --stdin Or even better, use git apply? -- Petr "Pasky" Baudis The next generation of interesting software will be done on the Macintosh, not the IBM PC. -- Bill Gates