[prev in list] [next in list] [prev in thread] [next in thread]
List: subversion-issues
Subject: [Issue 499] New - fix status output by handling absent files locally when updating
From: issues () subversion ! tigris ! org
Date: 2001-09-28 17:50:34
[Download RAW message or body]
http://subversion.tigris.org/issues/show_bug.cgi?id=499
*** shadow/issues_15/499 Fri Sep 28 10:50:34 2001
--- shadow/issues_15/499.tmp.4240 Fri Sep 28 10:50:34 2001
***************
*** 0 ****
--- 1,61 ----
+ +============================================================================+
+ | fix status output by handling absent files locally when updating |
+ +----------------------------------------------------------------------------+
+ | Issue #: 499 Component: subversion |
+ | Status: NEW Version: current |
+ | Resolution: Platform: All |
+ | Issue type: DEFECT OS/Version: All |
+ | Priority: P3 Subcomponent: src |
+ +----------------------------------------------------------------------------+
+ | Assigned To: issues@subversion.tigris.org |
+ | Reported By: kfogel@tigris.org |
+ | CC list: Cc: |
+ +----------------------------------------------------------------------------+
+ | Milestone: TargetMilestone: --- |
+ | URL: |
+ +============================================================================+
+ | DESCRIPTION |
+ Files that have been removed from the filesystem, but not svn rm'd, have
+ absent status, which shows up as a `?' in the leftmost column in status
+ reports. Try this:
+
+ $ svn co http://svn.collab.net/repos/svn -d repro
+ $ cd repro
+ $ rm README
+ $ svn st -n
+ $ svn st
+ $ svn st -nv
+ $ svn st -v
+
+ In all of those status outputs, README is correctly printed with a ?.
+ But if you run any combination that includes the -u switch:
+
+ $ svn st -u
+ $ svn st -vu
+ $ svn st -nu
+ $ svn st -nvu
+ ... you will see README printed out like this:
+
+ _ * - README
+
+ ... when it should be:
+
+ ? 174 README
+
+ ... or possibly:
+
+ ? * 174 README
+
+ if it has also been modified in the repository.
+
+ The cause of the problem is that the update reporter reports a missing
+ file as a `delete', eventually resulting in the ra layer driving an add_file
+ in the update edit. There is no reason for the repository to resend the
+ file if it's not modified in the repository, though! The crawler should just
+ keep a list of what was missing from disk, and during the update phase, copy
+ those files out of text base. It should never report to the repository that
+ the file was missing, it should merely report the entry's revision number, so
+ the repository can return any genuine updates. This would fix two problems:
+ the fact that an update can cause a file to be sent that the client actually
+ had locally all along, and the fact that adding -u to status screws up the
+ reporting of missing files.
\ No newline at end of file
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic