Fossil

View Ticket
Login

View Ticket

Ticket Hash: 47d4e76139fd63f2aeb6ff14dfe8512a0734d599
Title: tree checksum does not match manifest after commit
Status: Closed Type: Code_Defect
Severity: Priority:
Subsystem: Resolution: Rejected
Last Modified: 2024-01-29 09:23:36
Version Found In: [cf178577ec]
Description:
I ended up with a working directory where fossil changes says:
Index: env-msvc.cmd
===================================================================
--- env-msvc.cmd
+++ env-msvc.cmd

Index: include/file/file.hpp
===================================================================
........

For me it means something like there are no changes, but I don't know why it gets listed in the diff. And trying to commit all files but 'env-msvc.cmd' (specifying the files manually as 'fossil commit' arguments), gave me this error AFTER typing the commit message, no matter how many times I try to commit:

New_Version: 4e03710731bdf5f33437b72ebf4166066e2e2984
fossil: tree checksum does not match manifest after commit: bec214c60868becba5c0e7b1e612d26e versus 6da255ae2109c7a801b897c43efba77c

About how I reached that state... I had a tree of changes. Then I did: fossil merge --cherrypick XXX

That brought a little change in env-msvc.cmd.

I then did fossil revert.

That said to have reverted all the changes I had.

Then I did fossil undo.

That brought the changes back. I did not want the change that got merged in the file for the cherrypick, so I did fossil revert env-msvc.cmd.

And then it still appears in the diff without changes shown. As a clue, I'm on linux, and the env-msvc.cmd has CRLF line endings (it's mostly to be used on windows).


drh added on 2010-12-10 15:28:55:
That error message is part of the Repository Integrity Self-Check logic that runs prior to each commit. This is one defense against bugs in the Fossil code corrupting your repository. So it is an important error message.

The logic involved has been updated in later releases of Fossil to provide more detail and more clues about what is going wrong. There have also been some bug fixes. Can you please try this again with the most recent release of Fossil.


anonymous claiming to be viric added on 2010-12-10 16:36:14:
Now I tried the same procedure with [0018d724b3], and I get a similar result (simply different hashes on the final commit complain):

New_Version: b101a2c25089650d90f2099f381cd54926b83fd1
fossil: working checkout does not match manifest after commit: f45029dffcf73ec2c5fd7f9288d7faa4 versus 735a3cee0f1cf8aa32f197de190eda5a

anonymous claiming to be viric added on 2010-12-10 17:02:42:
Just to ammend what I tried with [0018d724b3], let me note that I was trying with a different ckout version, and different changes in the working directory. But I did the same trick on the env-msvc.cmd file to get to the bad state.

I mentioned the env-msvc.cmd had CRLF End-Of-Lines, but I was wrong. I checked, and it has usual unix LF EOLs. So nothing special about CRLF.

I tried changing the file to CRLF, and then fossil diff showed a diff as with all lines changed. Changing it back to LF ends of line brought the same broken state of showing the file EDITED but 'diff' showing no difference. Even changing to fossil settings diff-tool diff -u showed a void diff for that file, but the file appeared in the diff.

Can it be that the merge(cherrypick) + revert leave the hashes for the original ckout files in some strange state?


anonymous claiming to be viric added on 2010-12-10 17:04:20:
I could reproduce it simpler.

I did "fossil merge --cherrypick XXX" (bringing the change to env-msvc.cmd) and then "fossil revert". And there it shows the broken state already, that cannot be recovered unless doing fossil checkout.


anonymous claiming to be viric added on 2010-12-10 17:24:24:
Oh. It's not that simple. The simple test I said just above brings in the "void diff" problem, but fossil allows committing it. Then it results in a checkin with a void diff.

To bring in the checksum failure, looks like related to commiting OTHER files in the repository.

User Comments:
added on 2024-01-29 09:23:36:
Closing as part of periodic cleanup.