Question regarding dist-git aesthetics with branches

Jesse Keating jkeating at redhat.com
Sat Jul 17 00:07:20 UTC 2010


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I've been struggling with a particular wrinkle in dist-git, how fedpkg
is supposed to reliably discover what Fedora release a packager is
working on.

In the CVS world, we used a "branch" file.  This is OK, but I think it
would be cleaner if we didn't have to rely upon that.  It's the last
file that wouldn't be exact across all the Fedora releases if a package
is kept in sync.  So what I'd like to do is rely upon discovering the
top level upstream branch, say F-13.  This gets difficult if we allow
maintainers to create and operate on their own upstream branches (which
we should), as I have not found a reliable way to work from a local
branch to which remote branch it tracks to which top level remote branch
it was created from.

One suggestion has been to make use of directory based branching, so
that any maintainer created branch is in a subdir of a top level branch.
 EG we'd a user could create an F-13/kernel-2.7 branch, and call it
whatever they want locally.  fedpkg would be able to work from the local
branch name to what it tracks (origin/F-13/kernel-2.7) and walk down the
path from origin/ to discover F-13.  Then fedpkg can assume F-13 for the
branch and do all the dist conversions and koji target discovery from
that.  This doesn't put too much restraint on what maintainers call
their branches, particularly locally.

The wrinkle with the above though is the base top level branch.  When we
do this with directories, it's not possible to have a simple origin/F-13
branch that a user could interact with ("git checkout F-13" would
automatically detect that there is an origin/F-13 remote branch and
setup a local F-13 branch to track it" and still allow for an
F-13/foobar branch.  So we have to make the first base upstream branch
F-13/<something>.  One suggested <something> has been to call it "HEAD",
because git seems to have another short cut that would allow you to do
"git checkout -b origin/F-13" and since it finds an origin/F-13/HEAD it
will automatically use that.  HEAD seems to be a special name in this
context.  However it is pointed out that using HEAD here could be
confusing to people who are more familiar with git and naming
conventions.  Another suggestion is to call it F-13/master since
"master" is a more appropriate and expected name.  However that means
you can't use the short cut and have to do a full "git checkout -b F-13
origin/F-13/master".  Since you have to use the full path here, we
aren't bound by the name "master" and we could name it anything we want,
something that might make sense to Fedora or dist-git.

Now, these are fairly low details which can be hidden behind fedpkg
(there is a proposed patch to give fedpkg a 'switch-branch' command that
will switch you from one to the other, and we can make calls to "F-13"
attempt origin/F-13/master or whatever), but I feel that this is a
detail I shouldn't just decide on my own.  So, I welcome the discussion.
 I also welcome anybody challenging the above assumptions and showing us
an even better way of managing the branch naming and discovering client
side what Fedora target a maintainer wishes to work against.  I will
however put some constraints on that.  A maintainer shouldn't have to
modify anything in their local clone to indicate what target, fedpkg
should be able to do a clone of a repo, switch to a branch (which may be
a branch of a branch of a branch) and be able to discover what the
target should be.

Thanks!

- -- 
Jesse Keating
Fedora -- Freedom² is a feature!
identi.ca: http://identi.ca/jkeating
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.14 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/

iEYEARECAAYFAkxA9DgACgkQ4v2HLvE71NU9hwCghhorcU8oz/gAWKk3h76q+h7r
T2sAn0MfdRwHR+niHYQPIAWkaMhHLF1f
=xc1g
-----END PGP SIGNATURE-----


More information about the devel mailing list