Thread (4 messages) flat view 4 messages, 2 authors, 2016-06-15

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-patch
diff --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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help