switching upstream git repository

Damien Miller djm at mindrot.org
Tue Oct 31 10:32:24 AEDT 2017

(if you never used the "Upstream-ID:" markers in our commit messages and
are not morbidly curious, then feel free to stop reading now).

I've just switched the git repository that portable OpenSSH uses
to cluster OpenBSD CVS commits from one that was converted using
"git cvsimport" to one that is maintained using cvs2gitdump[1]

I've explained the background in the commit message that marks
the point at which the switch happens, so rather than repeat
myself, I'll just paste it below ^_^

If you have any questions, please ask me. Here's my attempt at
preempting a few:

q: Why not use the OpenBSD git conversion[2] directly?
a: Mostly because it isn't real-time and I like being able to sync
   changes from upstream to portable instantly. This is especially
   important at release time, when lots of changes happen quickly.

q: Why not figure out what was going wrong with git cvsimport?
a: I started to but it was obviously going to be a long yak-shave
   involving git-cvsimport (a Perl script), the old version of cvsps
   that it demands and CVS itself. cvs2gitdump is 1/2 the length of
   git-cvsimport alone, considerably more readable (and therefore
   debuggable) and works with the repository RCS files directly.

q: Why not do tree surgery to graft the git-cvsimport history to
   a repository maintained by cvs2gitdump?
a: 1) I don't know whether it would work properly,
   2) I couldn't be bothered to find out (I'd rather spend my time
      working on OpenSSH than fighting infrastructure), and
   3) unlike git-cvsimport, cvs2gitdump generates histories and
      commit hashes that are stable between imports, so it provides
      a more reproducible and canonical base to build on. That
      would be lost if I tried to graft the two toghether.

[1] https://github.com/yasuoka/cvs2gitdump

commit eb9c582b710dc48976b48eb2204218f6863bae9a
Author: Damien Miller <djm at mindrot.org>
Date:   Tue Oct 31 00:46:29 2017 +1100

    Switch upstream git repository.
    Previously portable OpenSSH has synced against a conversion of OpenBSD's
    CVS repository made using the git cvsimport tool, but this has become
    increasingly unreliable.
    As of this commit, portable OpenSSH now tracks a conversion of the
    OpenBSD CVS upstream made using the excellent cvs2gitdump tool from
    YASUOKA Masahiko: https://github.com/yasuoka/cvs2gitdump
    cvs2gitdump is considerably more reliable than gitcvsimport and the old
    version of cvsps that it uses under the hood, and is the same tool used
    to export the entire OpenBSD repository to git (so we know it can cope
    with future growth).
    These new conversions are mirrored at github, so interested parties can
    match portable OpenSSH commits to their upstream counterparts.
    An unfortunate side effect of switching upstreams is that we must have
    a flag day, across which the upstream commit IDs will be inconsistent.
    The old commit IDs are recorded with the tags "Upstream-ID" for main
    directory commits and "Upstream-Regress-ID" for regress commits.
    To make it clear that the commit IDs do not refer to the same
    things, the new repository will instead use "OpenBSD-ID" and
    "OpenBSD-Regress-ID" tags instead.
    Apart from being a longwinded explanation of what is going on, this
    commit message also serves to synchronise our tools with the state of
    the tree, which happens to be:
    OpenBSD-ID: 9c43a9968c7929613284ea18e9fb92e4e2a8e4c1
    OpenBSD-Regress-ID: b33b385719420bf3bc57d664feda6f699c147fef

More information about the openssh-unix-dev mailing list