Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How does Tortoise's non recursive commit work?

Found by Google how to fix it: press F5 in the commit window (not in the "warning popup")

See http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=757&dsMessageId=2831045 for details.

On 26.08.2011 22:39, Ryan J Ollos wrote:

For several months now I've been seeing the following dialog box appear when initiating Commit. It frequently happens when attempting to commit following a merge.

The thing I have noticed lately however is that if I Cancel and then manually refresh the file list (F5), I don't see the message again when initiating the commit a second time. The commit seems to succeed fine and with no further problems.

The commit dialog monitors the working copy in a background thread for change notifications. Such notifications are sent by the OS in case files are modified/moved/renamed/... If such a notification is received, the commit dialog first does a few checks so it can drop most of them. If the notification indicates that a file that is not checked and not visible in the commit dialog has somehow changed, it switches back to non-recursive committing. That's because if you have e.g. a file open in another editor and save your changes while the commit dialog is open, then that file would get committed as well even though you haven't checked it in the commit dialog (it doesn't show up until you refresh the dialog with F5).

So if you see that warning dialog often, please check if there's another tool/app running which modifies files in your working copy.

And as you noticed: if you hit F5, that 'non-recursive flag' is reset because after a refresh, you see all the files again - even the ones you modified after you started the dialog.

Stefan


I had the same issue but resolved it by reverting changes to files that I had marked to 'ignore-on-commit'

Once I reverted these files, then tortoisesvn was able to commit all the other files from the merge


Is it fine if i proceed with this commit?

No, your commit will ignore all changes in WC-tree and reflect only root-level changes (broken merge).

You made an error when checking out non-recursive initially. You can try to perform good, full commit using --depth infinity parameter in the CLI or find this switch in TortoiseSVN GUI.

svn commit --depth infinity . -m "Merge"

Also for some files that I've SVN-added , I've made changes after adding (If this affects the nature).

In my case that was exactly what caused the message to appear, even I unselected those files for the commit.

Ugly solution which only works safely if just a few files are affected:

  1. Create a copy of the changed files
  2. Revert the changed files
  3. Commit the merge/reintegration
  4. Copy the changed files back to the original place

Reminder to self: only reintegrate a branch if the target (trunk) is clean.


I just had the same issue. Instead of selecting all the files, I clicked on versioned and everything worked well. In my case, the option versioned selected all the files, so everything is ok now.


It looks like TortoiseSVN performs some kind of validity checking before calling commit. Good but the error message is very unclear.

When I faced this issue, I went back to using the svn command line to commit. Commit failed due to the reason that one of the folders was not up to date. After updating just that folder, I ran "svn commit" once again and it went through.

Edit: PS: Before you use try this out, make sure you do not have any files marked as "ignore on commit". "Ignore on commit" is tortoise specific and SVN commit picks these changes as well.


Just thought I'd post this because it worked for me...

The reason this happened is because I'd partially renamed one of the new projects I'd created and for some reason they all showed up as "Missing" on the commit screen.

After I removed the project and folder (which SVN had put a tick on) and put it back in as a new project again, suddenly all of the "Missing" had turned into "Added" and the commit ran fine without warning me of anything.

Hope this helps!