From: "R. Steve McKown" <rsmckown@yahoo.com>
To: git@vger.kernel.org
Subject: Subprojects: a user perspective
Date: Fri, 17 Mar 2006 19:11:45 -0700 [thread overview]
Message-ID: <200603171911.45725.rsmckown@yahoo.com> (raw)
We are looking to migrate from CVS to a distributed VCS like git. I've read
the discussions on this list WRT subprojects and wanted to present another
user's perspective. The history of this list is active, so I apologize if my
post is redundant or unwanted. Send flames my way! ;^)
Our repository is relatively large and extensively uses the CVS vendor branch
feature to use and track software components managed by other groups, such as
the linux kernel, openssl, busybox, uclibc, etc. These are the tasks that we
perform to manage components:
1. Occasionally import new revisions of components we use into
the component's private branch (like an incoming branch).
This provides a version history of each component's "pristine
source" as used within the project over its lifetime.
2. Each component gets a subdirectory in the project branch(es).
Component versions are merged from the component's incoming
branch into this subdirectory as new components or component
revisions are incorporated into the project.
3. Local modifications, as necessary, are made to component
code within the project branch(es), not the incoming
branches which only hold pristine sources.
4. Patches of local changes made to a component, like for
submission to the upstream maintainer, are built by diffing
a project branch's component subdir with the component's
incoming branch.
I think git can do all of this if the component incoming branches have the
same path information as the project branches. In other words, if the
project places the busybox component at /src/components/busybox, then the
busybox incoming branch must place the busybox code
into /src/component/busybox.
So, in terms of adding specific support for subprojects, the only thing I see
that could be improved would be the ability to reference a sub-tree in git
operations that currently expect a tree (aka tree-ish or refspec parameters).
I liked Junio's concept of subproject linking, but only because it provided a
way to conceptually address a sub-tree.
With sub-tree addressing, a component branch could be naturally rooted, and
diffing its head against the a project branch head at the component's subdir:
git diff linux-incoming proj-branch@/src/components/linux
or merging a new linux version into the project:
git checkout linux-incoming
#suck in a new linux release from upstream
git commit -a
git tag linux-2.4.16
git checkout master
git pull . linux-2.4.16:.@/src/components/linux
All the best,
Steve
reply other threads:[~2006-03-18 2:08 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200603171911.45725.rsmckown@yahoo.com \
--to=rsmckown@yahoo.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox