Am 11.06.2013 19:06, schrieb Yann Droneaud:
> Hi,
> I'm trying to setup a workflow to track vendor releases (upstream).
> Each new release are provided as an archive of source code, data,
> documentation, etc.
> For each vendor releases, fixes need to be applied before making them
> available to users (downstream).
> Seems to be a rather common use case, applied by most Linux distribution
> for decades.
> In my case, on top of each releases, a common set of patches will be applied,
> the biggest, the most intrusive one, being converting CRLF to LF using 
> dos2unix,
> the others being small portability fixes. In this case, fixes are not going to
> be applied by upstream.
> I'm trying to "design" (copy ;) a workflow with following properties,
> in order of importance:
> 1- I wish to keep a branch with each new vendor release as a commit.
>    This branch's history is only about vendor releases,
>    so it's easy to read the "changelog" of the vendor releases
>    with command such as git log <vendor-release-branch>
> 2- I'd like to ease the process of applying our patches on top
>    of each new vendor release, eg. reduces the likeliness of conflicts.
> 3- I wish to keep a branch with each new fixed vendor release as a commit.
>    Just like the upstream <vendor-release-branch>, only one commit
>    per release, so it's easy to read the "changelog" of the vendor releases
>    with command such as git log <patched-release-branch>

I suggest you aim for the following history (time flows from left to right):

  U---V-----W          <-- upstream branch
   \   \     \
    C---D-----E        <-- CRLF conversion branch
     \   \     \
      K---L--M--N--O   <-- downstream branch

U, V, W are the upstream releases.

C is the initial CRLF->LF conversion. D merges the second upstream
release into the CRLF branch, E the third upstream release. These merges
very likely create tons of conflicts. But that does not matter, because
you know that the only change in "our" side is CRLF conversion. The
commits on this branch can easily be automated. That's the primary
motivation for this scheme.

K is your first small bugfix and also your first downstream release.

After merging L, the second, CRLF-converted, upstream release, you make
your second small change, M, which is also your second downstream release.

Rinse and repeat with N and O for the third release.

-- Hannes

To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to
More majordomo info at

Reply via email to