[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: diff of scheduled copies

From: Jack Repenning <jrepenning_at_collab.net>
Date: 2004-09-11 01:31:43 CEST

On Sep 8, 2004, at 8:23 PM, Folker Schamel wrote:

> Jack Repenning wrote:
>> On Sep 4, 2004, at 5:15 AM, Folker Schamel wrote:
>>> "what I have typed (text and props)"
>>> = svn diff
>>> "show me what I'm about to do (text and props)"
>>> = svn status + svn diff
>>> -> So why a new switch?
>> "svn status + svn diff" does not show me "what I'm about to do."
>> Status shows that the files are scheduled for copy, true, but does
>> not show the content of the files. Diff is all about the file
>> content, but at present ignores scheduled-copy files (or shows only
>> the changes since the copy).
>> A concrete example: in our product, we have this hierarchy of
>> configuration files: a site-specific one, a user-specific one, and
>> the default settings (not necessarily in that order). Java
>> properties files are often handled the same way, and the java
>> Properties class supports it directly. If I copy in such a file,
>> then the file contents--the property settings--have effect that I
>> cannot fully predict merely by seeing the file name. Properties in
>> the copied file will affect the behavior of the system, even though I
>> have done no further typing in the files.
>> If I copy in a file with 20 settings, and change one, then there's a
>> legitimate question "what's the one thing I changed?", and there's
>> another equally legitimate question "what are the 20 things I'm about
>> to change?" None of your proposed combinations can tell me all those
>> things. "svn status + svn diff + cat" can, but this is too much
>> work.
> You not only want to know what you are going to change
> ("copy file A into B" without changing the content).
> You want to know more:
> You want to know the effect of this change onto your
> particular special system.

Sorry, I'm not following: what do you mean by "system" here? The
computer / operating system / etc. it's running on? The whole thing
that would be produced by building these sources?

> This requires also information about the current state,
> not only the "delta" you are going to apply.
> If I change "file1.java", I cannot fully predict the effect of this
> change
> without inspecting all other java files referring classes of
> "file1.java".
> Conclusion: Even if I only change "file1.java", "svn diff" should
> display
> the unchanged content of all other java files referring to classes of
> "file1.java"?

I think you suggest this as a "reductio ad absurdum" on my idea, right?
  You're saying "of course, no one would want diff to show you the
content of all files that use any class in file1.java. So obviously,
no one would want diff to show what Jack has requested above."

This is not so obvious to me: at the least, *Jack* wants this output
;-) Others have also seemed interested.

Back in the real world, where we try to stay away from absurdities:
without question, the humans always retain the responsibility for
making sure that their changes are "OK"; the tool's job is to provide
the best info it can to assist that decision. My claim is that both
these two questions are (a) interesting, and (b) easy for diff to do:

- what am I about to commit
- what have I changed since the copy

... but we only provide one, at the moment.

> svn is and should be unaware of the your particular system.
> A system-independent definition of "what I have changed"
> is a complete description of the "changeset".
> This is what "svn status" and "svn diff" do (except for binary files).

I have already pointed out that this is not so, that the combination of
status and diff does not display the (unmodified) content of the copied
files, which is none the less a part of the "changeset," and hence is
not complete. You need some additional command, perhaps "cat", to
create a complete description.

My proposal here is to modify diff in such a way that you need only one
command, diff, instead of three.

Jack Repenning
CollabNet, Inc.
8000 Marina Boulevard, Suite 600
Brisbane, California 94005
o: 650.228.2562
c: 408.835.8090

To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Sep 11 01:31:58 2004

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.