pkgsrcv2.git not syncing correctly; around 400 missing files

Matthew Dillon dillon at apollo.backplane.com
Mon Jul 25 15:45:19 PDT 2011


:Hi Matt,
:It looks much better now.
:All the "MISSING" files have been restored.
:There are still some "DIFF" files making it through the script. I
:increased the regex to filter out $Revision[:$] and $Date[:$] as well as
:$Id[:$] and $NetBSD[:$], and the attached file shows what is left.
:
:The remaining files on the list feature the $Log$ CVSID and others, so
:the git pkgsrc repository looks 100% synchronized to me!
:
:John

    Yes, this is because CVS $variable expansions are not formally stored
    as patches in the CVS archive.  Instead the variable-expansion is done
    after the file is checked out.  The version of the file in the CVS
    archive will often contain the variable expansions related to the
    previous version rather than that particular version.

    So anything related to variable expansion will be broken no matter what
    we do.  The git conversion scripts effectively have to tell cvs not
    to expand anything and work just with the pure CVS archive (which
    contains the broken expansions associated with the version previous to
    the one being checked out), otherwise incremental patches will not work
    properly.

    My pkgsrc cvs->git conversion script is ridiculously complex.  Not only
    can the cvs2git conversion not always work properly, the rsync of the
    cvs repo itself can catch a cvs commit in the middle so the script has
    to loop the rsync until it detects the topology hasn't changed recently
    (i.e. is stable).  And even then it doesn't always stay in sync so my
    script then does a catch-all cvs checkout, git checkout, and diff/patch,
    then a forced git commit to clean up the loose ends.

    Of course, it is all for naught if rsync itself breaks like it just
    did :-(

							-Matt






More information about the Users mailing list