gnu-arch-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnu-arch-users] Partial commit, partial undo


From: Ludovic Courtès
Subject: [Gnu-arch-users] Partial commit, partial undo
Date: Tue, 21 Feb 2006 09:59:39 +0100
User-agent: Gnus/5.110004 (No Gnus v0.4) Emacs/21.4 (gnu/linux)

Hi,

"Andy Tai" <address@hidden> writes:

> So the problem does not depend on how the file list to commit is specified..

I believe that's exactly what he meant.  But still, there _is_ a problem
and now one more way to exercise it.  ;-)

But basically, it seems to me that this problem depends on the semantics
of partial commit.  Suppose this:

  # Pristine tree
  $ tla mv b c
  $ tla mv a b
  $ vi b
  # ...
  $ chmod a+x b
  $ tla commit -x b

What does this `commit' mean?

  1. Commit everything but the renaming of `b' to `c'.

  2. Commit everything but the renaming of `a' to `b'.

  3. Commit everything but the changes made to the file that used to be
     named `b'.

  4. Commit everything but the changes made to the file currently known as
     `b'.

  5. Commit everything but the permission changes made to the file
     that used to be named `b'.

  6. Commit everything but the permission changes made to the file
     currently named `b'.

  7. Any combination of the above.  ;-)

I'm not sure there exists a general solution to this problem, because
sometimes you'll want some semantics, and sometimes some other.  Note
that the same problem arises with partial undo.

A better approach would be to list file IDs instead of file names.  For
instance:

  $ tla commit -x `tla id b | cut -f 2`

This is much less ambiguous but also less convenient.  Then we could
assume, in this example, that both data and meta-data modifications
(including renaming and permissions) are excluded from the commit.  But
then, in this very example, `commit -x b' would be impossible because of
the other renaming --- but after all, that is something the user should
expect.

Conclusion: as a first approach, I'd add a `--ids' option to all the
selective commands (`commit' and `undo') so that one can specify things
less ambiguously.

Then we could also add a `--name' and a `--permissions' option to
specify that we only want to undo/commit/exclude changes made to the
name or permissions.  But that is probably less useful.

Thanks,
Ludovic.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]