On Wed, 2001-12-12 at 13:54, Ben Collins-Sussman wrote:
> My confusion is in the bootstrapping of this process.  How does one
> create and add a file that contains keywords?  If we expanded the
> keywords in the working file after the very first commit, then as soon
> as the commit was over, the file would have a local mod (because it
> would no longer match text-base, which still has the unexpanded
> keyword.)  Is this ok?  Would the user have to commit *again*?
It doesn't count as a local mod.  Our is-modified predicate has to
keyword-expand the repository contents before comparing against the
working version to determine if a file is locally modified.
This is how CVS works (although I would propose that we handle merges a
bit differently, and maybe diffs, but that can be a topic for the
future).  Try it:
  mkdir -p /tmp/repos/CVSROOT /tmp/repos/foo
  setenv CVSROOT /tmp/repos
  cvs init
  cd /tmp
  cvs co foo
  cd foo
  echo '$Id$' > blah
  cvs ci -m test blah
Now look at /tmp/repos/foo/blah,v.  Notice that the text of rev 1.1 is
just "$Id$"--what is committed is exactly what was in the file.  But if
we look in the version file, the keyword has been expanded.  Now try:
  cvs diff blah
You get no output, because the repository keyword-expands the repository
contents of rev-1.1-blah before performing the diff.  On the other hand,
if you disable that keyword expansion with "cvs diff -ko blah", you'll
get a difference.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Oct 21 14:36:52 2006