[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [PATCH] proposed v3 source format using .git.tar.gz

On Fri, Oct 05, 2007 at 07:16:13PM -0400, Joey Hess wrote:
> I've been working on making dpkg-source support a new source package format
> based upon git. The idea is that a source package has only a .dsc and a
> .git.tar.gz, which is just a git repo.

Is a .gitdiff.tar.gz possible, so the archive doesn't need to have the
full git repo replaced by each upload? ie, something like

	 .... foo_1.0-1.git.tar.gz
	 .... foo_1.0-2.gitdiff.tar.gz

so that a small patch only adds a small file to the archive rather than
replacing a large one?

This means you can't build the package by hand with standard unix tools
-- at the very least you need git installed, and if other VC systems
are to be supported, you need them too. Changes in repository formats
will presumably result in versioned dependencies too.

This is slightly worse than the case for existing patch management tools
in that most of those can be dealt with by hand; though cdbs and to a
lesser extent debhelper can't be quite as easily replicated I guess.

Once the unpack is done, I don't see any reason why you can't do an NMU
in the traditional way, so presuming "dpkg-source -x" or "apt-get source"
handles the unpack automatically, I don't think it necessarily imposes
any new requirements on NMUers.

Maybe providing a feature on packages.debian.org (or similar) to download
sources in simple, non-VC, tarball format would make this a complete
non-issue though?

Would it make sense to have the source format look more like:

	Format: 3.0
	Source: dpkg
	Source-Depends: git-dpkg (>= 3.14159)
	Source-Hooks: /usr/bin/git-dpkg
	 ... foo_1.2.git.tar.gz

and have the git specific functionality be provided by a /usr/bin/git-dpkg
binary (with standardised arguments) from the git-dpkg package? That
would let you smoothly deal with repository changes and implementing new
interfaces, and also let us limit the allowable formats for the archive
reasonably simply.

You could drop the Source-Hooks: line, and just have dpkg-source know
to associate *.git.tar.gz with /usr/lib/dpkg/source/git, and trust the
package will provide it.

Bonus points: rather than "debian/rules clean, create a diff, build",
have dpkg do "debian/rules clean, commit any uncommitted changes with the
commit message being the changes from the changelog, create a .git.tgz,
build" for git-source-format packages.


Attachment: signature.asc
Description: Digital signature

Reply to: