Re: Corrupt checkout, but 'svn status' and 'svn diff' refuse to admit it?
Johan Corveleyn <[email protected]> Thu, 10 Jul 2025 17:37:45 +0200
| Newsgroups | gmane.comp.version-control.subversion.user |
|---|---|
| Message-ID | <CAB84uBUfbhpA3CNF6uvm-5ET699E0-ALZHgvYfGaoEfame=hhw__16997.8043691785$1752161897$gmane$org@mail.gmail.com> |
On Wed, Jul 9, 2025 at 9:53=E2=80=AFPM EML <[email protected]> wrote= : > > I have a 2+ GB repo which I committed to today, to reach rev 357 > I then attempted to use a SQL database in the checkout, which turned out = to be corrupt. When importing in MariaDB, it complained about a null char i= n the database > The database was last committed at r335. I know it hasn't changed since r= 335, and 'svn log' shows r335 as the last commit, two months ago. I have im= ported the database on several occasions since then, without problems, when= building a VM > I then checked out the entire project at r335 to find out if the database= has changed. If I do a standard diff of the database in r357 and r335 they= are different. They are the same size, but the r357 version contains binar= y non-printing data, which is why MariaDB doesn't like it > After the r357 checkin today, I modified one text file. I deleted this, a= nd did an 'svn update' at the top level, to get a clean r357 > In the current checkout, 'svn status' shows no modifications. If I run 's= vn diff -r335 my-database.sql' this reports no differences. So, svn thinks = the new and old databases are identical, but the plain diff clearly shows t= hey are different > I then did a new complete checkout of the entire project at r357. The da= tabase in this new checkout is correct - it's identical to the r335 version > The repo looks good - 'svnadmin dump' doesn't complain, anyway > db/fs-type says fsfs > Both the checkout and the repo are on the same machine, using WebDAV, ver= sion 1.14.1 (r1886195), Ubuntu 22.04 > There are some changes in the .svn directory between the "current" r357 a= nd the just-checked-out r357 > This is a WordPress database. 'file' reports it as UTF-8 text, and 'wc -L= ' reports a maximum line length of 693319 characters. It doesn't have an sv= n:mime-type property. > > Conclusion: it's possible that a checkout can be corrupted in a way that = bypasses detection by svn itself. Is this a reasonable conclusion, or have = I missed something? Is there a maximum line length limit for a "text" file? [ Moved dev@ to bcc so it is dropped on further replies, and added users@ to cc. This is at first a question for the users list. ] If I understand correctly you have one broken working copy in which the contents of my-database.sql became corrupted somehow (containing binary data, while it should be UTF-8 text and a valid database). In the SVN repository that same file is still correct, and a new checkout at r357 confirms that. In general, the file in your $broken_workingcopy might have been changed out-of-band, by some other tool, a virus, a disk failure, ... but the main question is: why doesn't your $broken_workingcopy detect that it's modified? Is that a correct rephrasing of your question? --=20 Johan