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

Re: RFR: GIT Package VCS



On Sat, 2007-06-09 at 23:09 -0400, Horst H. von Brand wrote:
> 
> You lost me here. If I am futzing around with the foo package, I'll have
> checked out sources /here/ and work against that. Perhaps I'll be
> following its upstream SCM, but that loses WRT pristine source tarball
> (exported version of today's changes, or even of tag 1.2.3, won't be
> exactly the released tarball foo-1.2.3.tar.bz2), so tracking all this
> centrally doesn't make much sense to me. Sure, tracking the tarballs
> making up any released RPMs is a must, otherwise I don't see the point.

Checking exploded tarballs into a VCS might work ok, but there are
issues that make that more difficult that you might first realize.  Take
hypothetical project foobar, that has been developed thusly:

   +-1.0       +-2.0
   v           v
A--B--C--D--E--F--G
          \
           W--X--Y--Z
                    ^
                    +-3.0

Each letter represents a commit into the project's source code
repository.  The numbers represent releases.  Now imagine that you have
been packaging foobar for inclusion in Fedora.  You have been checking
the exploded tarballs into a source code repository and end up with
something like this:

+-1.0
|  +-2.0
|  |  +-3.0
v  v  v
A--B--C

Now, forward-porting your patches from 1.0 to 2.0 went relatively
smoothly, but for some reason forward-porting the patches from 2.0 to
3.0 was very difficult!  If you compare the two graphs you can see that
the code in your private source code repository has a very different
history from the code in the upstream source code repository.  VCSs like
Git and Mercurial can take advantage of that history to make rebasing
patches much more automatic.  It's not perfect, you may end up doing
some manual, but it's a darn sight easier than doing it without the full
history.

It's true that many projects do not have the exact same content checked
into and tagged in their source code repository, but most of the time
that's not going to matter, and if it does there are methods of dealing
with that (which I won't go into now because this is already getting
long enough).

It's also true that some open source projects do not make their source
code repositories public.  In that situation we'd just have to live with
checking in exploded tarballs into our source code repository.

The other point is to get the development of these patches off of the
maintainer's hard drive and into a central, public repository.  Sure,
all of the patches that we apply to the pristine source are stored in
the package repository, but that's a very difficult format to work with
for anything but applying them to the code.  It's especially difficult
if the patch has evolved over time and you want to look back at the
history of the patch.  Have you ever tried to read the diff of a diff?

Jeff

Attachment: signature.asc
Description: This is a digitally signed message part


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