From: Matthew Ogilvie <mmogilvi_git@miniinfo.net>
To: Martin Langhoff <martin.langhoff@gmail.com>
Cc: Junio C Hamano <junio@pobox.com>,
git@vger.kernel.org, Martin Langhoff <martin@catalyst.net.nz>,
Frank Lichtenheld <djpig@debian.org>
Subject: Re: [PATCH 0/3] git-cvsserver: Add support for some binary files
Date: Mon, 19 May 2008 01:35:35 -0600 [thread overview]
Message-ID: <20080519073535.GA2885@comcast.net> (raw)
In-Reply-To: <46a038f90805181538v56aee5b8y33d68b226a62494f@mail.gmail.com>
On Mon, May 19, 2008 at 10:38:21AM +1200, Martin Langhoff wrote:
> On Sat, May 17, 2008 at 12:03 PM, Junio C Hamano <junio@pobox.com> wrote:
> > Matthew Ogilvie <mmogilvi_git@miniinfo.net> writes:
> >
> >> This series of patches extends git-cvsserver to support telling the
> >> CVS client to set the -kb (binary) mode for files that git considers
> >> to be binary (and not for text files). It includes updates to
> >> documentation and tests.
> >
> > I am unfortunately not familiar with this part of the system and I'd need
> > to summon help from experts, but it looks rather nicely done.
>
> IIRC, one thing that is _not_ handled well in CVS -k flag changes on
> the server side (since -k modes are not versioned). If we are
> guessing, this may be more likely to happen, or at least more likely
> to _surprise_ people.
Since git-cvsserver can (and does) refigure and send a different -k
every time it sends a new version of a file, it could be argued
that git-cvsserver actually fixes the non-versioned -k issue,
at least partly, from some perspectives. (There's still the issue
of when a new .gitattributes file takes effect, etc.)
>
> Matthew, have you had a chance to test k mode changes against clients?
> Are we reasonably bug-compatible with the original turd^H^H^Hhing? ;-)
So far I've only done limited testing with Linux CVS 1.12.12.
No newline-munging clients; the test cases just check the
CVS/Entries file, not the file contents. Most of my testing has
been the test cases included with the patch.
I don't expect any new compatibility problems from this. The old code
would send exactly the same data for text files and binary files
as this new code. It was just limited to sending all files as text
or all files as binary (existing gitcvs.allbinary), instead of
allowing a mix.
I'll try to do some newline-munging tests with Cygwin CVS (talking
to a server on Linux) sometime this next week.
I've heard the most finicky CVS client is probably the
one embedded in the Eclipse plugin. Apparently it has had trouble
with minor tweaks in new versions of official CVS, let alone
an emulation. But given that I have never even tried Eclipse, I
probably am not a good choice for testing it, and probably wont.
----------
Generally my motivation here is to make it easier for
an organization like my day job to transition to git. I generally
don't intend to use git-cvsserver myself much, especially not from
platforms that need the newline-munging.
I perceive one remaining big issue for git-cvsserver to be
a good replacement for real CVS: The ability to properly
support "cvs update -r VERSION", where VERSION could
be any branch, tag, CVS version number, or git commit hash.
Git-cvsserver can partially support this by checking out a
totally different sandbox as "cvs checkout VERSION" (notice
no -r), but without the ability to switch versions in place,
that is an awkward workaround at best. Fixing this seems
really involved (extending the DB scheme, etc), unless
clients either treat the CVS version as an opaque string, or
could be easily patched to do so (so that we could just stick
a GIT hash where a CVS version string is expected). Also, some
form of submodule support would also be nice, but not
critical (the right thing here is still vague in my mind,
which is hardly surprising as there has recently been
discussion about awkward use cases for submodules even
within native git itself). Merging with "cvs update -j ..."
and creating tags/branches with CVS are relatively unimportant:
rare enough that they could probably just be reserved for
git itself. Does anyone have any thoughts about any of this?
- Matthew
next prev parent reply other threads:[~2008-05-19 7:36 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-15 4:35 [PATCH 0/3] git-cvsserver: Add support for some binary files Matthew Ogilvie
2008-05-15 4:35 ` [PATCH 1/3] git-cvsserver: add mechanism for managing working tree and current directory Matthew Ogilvie
2008-05-15 4:35 ` [PATCH 2/3] implement gitcvs.usecrlfattr Matthew Ogilvie
2008-05-15 4:35 ` [PATCH 3/3] git-cvsserver: add ability to guess -kb from contents Matthew Ogilvie
2008-05-17 0:03 ` [PATCH 0/3] git-cvsserver: Add support for some binary files Junio C Hamano
2008-05-18 22:10 ` Matthew Ogilvie
2008-05-18 22:38 ` Martin Langhoff
2008-05-19 7:35 ` Matthew Ogilvie [this message]
2008-05-19 9:34 ` Johannes Schindelin
2008-05-20 3:05 ` Matthew Ogilvie
2008-05-19 10:53 ` Martin Langhoff
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=20080519073535.GA2885@comcast.net \
--to=mmogilvi_git@miniinfo.net \
--cc=djpig@debian.org \
--cc=git@vger.kernel.org \
--cc=junio@pobox.com \
--cc=martin.langhoff@gmail.com \
--cc=martin@catalyst.net.nz \
/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;
as well as URLs for NNTP newsgroup(s).