This patch makes "svn status" report a tree conflict on each victim
(each node that is having two conflicting changes made to it). Until now
we have only reported status "C" on a directory that has one or more
children that are tree conflict victims.
Issues:
1. No status notification is currently produced for a path where there
is no entry in the WC. Such a path can be the victim of a tree conflict
between a delete and some other change. Although there isn't a node in
the WC at this path, there is now some information about it in the WC,
so it seems right to me that "svn status" should report on it, whether
we create a WC entry for it or not.
Here is some output from stat_tests.py 31, with this patch applied, in
which "svn update" brings incoming changes for three files (text-mod
pi, Del rho, Del tau) on to local scheduled changes (Del pi, text-mod
rho, Del tau):
> CMD: svn update svn-test-work/working_copies/stat_tests-31
> D svn-test-work/working_copies/stat_tests-31/A/D/G/rho
> D svn-test-work/working_copies/stat_tests-31/A/D/G/tau
> U svn-test-work/working_copies/stat_tests-31/A/D/G/pi
> C svn-test-work/working_copies/stat_tests-31/A/D/G
> Updated to revision 2.
> CMD: svn status svn-test-work/working_copies/stat_tests-31/A/D/G
> C svn-test-work/working_copies/stat_tests-31/A/D/G
> TT svn-test-work/working_copies/stat_tests-31/A/D/G/rho
> TT svn-test-work/working_copies/stat_tests-31/A/D/G/pi
> EXPECTED STDOUT (unordered):
> C svn-test-work/working_copies/stat_tests-31/A/D/G
> TT svn-test-work/working_copies/stat_tests-31/A/D/G/pi
> TT svn-test-work/working_copies/stat_tests-31/A/D/G/rho
> TT svn-test-work/working_copies/stat_tests-31/A/D/G/tau
2. The actual letters and columns used for the status output are ... up
for grabs. I think there are three main options:
- "C" in a new column. This has the benefit that the previous
scheduling of the item can still be seen. (Alternative letters: "T" for
Tree or "V" for Victim.)
- Show "TT" in the text/prop status columns, on the basis that a Tree
conflict is a form of conflict that affects both text and properties. I
chose this option for the patch because it is clearly visible and
distinguishable. (Possible alternative: "TC" - because it has a "C" for
Conflict in it as well as being mnemonic for Tree Conflict.)
- Re-use "CC", on the basis that a tree conflict extends the
definition of "text conflict" to include the case where one or more
versions of the text are nonexistent, and the same for properties. I
believe we already handle property conflicts like this: if a property is
deleted in one version and modified in the other, we signal "C" in the
prop-conflict column. I quite like this option.
I don't want to bike-shed about this. I think the best thing to do here
is to go for a separate column, so that we're not hiding any
information. It will be easier to judge whether the extra information is
really useful if we can see it than if we hid it to start with.
- Julian
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-09-19 16:34:35 CEST