"Fetching tree conflict information" hangs

2,837 views
Skip to first unread message

Tobias Knauss

unread,
Sep 7, 2018, 7:02:24 AM9/7/18
to TortoiseSVN
I created a branch at revision 2000 of the trunk.
I renamed some files in the trunk at revision 2141.
I edited these files in the branch at revision 2194.
Now I want to merge the changes from the branch back to the trunk, but it causes a tree conflict because files have been renamed there. This is okay.

Not okay is, that a window pops up and tells me "fetching tree conflict information" and searches back until revision 1359 and hangs there forever. In r1359 we had many edits (files and folders renamed, files deleted) because we converted our code from C++/CLI (.cpp, .h)  to C# (.cs). Somehow this fetching dialog doesn't like that, even though the conflicting files were not part of the commit for r1359.

Why does it hang? Why does it search back so far? It's not needed.

Best regards
Tobias

Tobias Knauss

unread,
Sep 7, 2018, 8:02:44 AM9/7/18
to TortoiseSVN
I just found that sometimes it doesn't even get far enough to hang, but it crashes before:

Tobias Knauss

unread,
Sep 7, 2018, 8:06:00 AM9/7/18
to TortoiseSVN
Related Feature request:
(this maybe should be a separate post, but I add it here as it is closely related)

Add an option in the dialog to manually select the file in which the merge should be executed, if this file could not be found due to tree conflicts:

None of these 2 options is satisfying, as the changes that are to be merged are lost.
Please add [Manually select target file for merge]


Stefan

unread,
Sep 7, 2018, 9:58:59 AM9/7/18
to TortoiseSVN
if the crash happens repeatedly, can you try doing the merge with the command line client please?
I can't see anything that could crash in the TSVN code of that part.

Stefan

unread,
Sep 7, 2018, 10:26:13 AM9/7/18
to TortoiseSVN


On Friday, September 7, 2018 at 2:06:00 PM UTC+2, Tobias Knauss wrote:
Related Feature request:
(this maybe should be a separate post, but I add it here as it is closely related)

Add an option in the dialog to manually select the file in which the merge should be executed, if this file could not be found due to tree conflicts:

None of these 2 options is satisfying, as the changes that are to be merged are lost.
Please add [Manually select target file for merge]


unfortunately, there's no svn API that accepts a target path for resolving such a tree conflict.
So I don't think I can add such a button.

Stefan

Tobias Knauss

unread,
Sep 7, 2018, 3:37:24 PM9/7/18
to TortoiseSVN


Am Freitag, 7. September 2018 15:58:59 UTC+2 schrieb Stefan:
if the crash happens repeatedly, can you try doing the merge with the command line client please?
I can't see anything that could crash in the TSVN code of that part.
 
The crash happens shortly after a "fetching tree conflict information" popped up. It is reproducible on the merge which I am currently trying to do. The text log has no useful info (server name removed):
[14696] #1 Thread:14404 SVN::GetWCRootFromPath(line 2071) svn_client_get_wc_root Path=D:/sw_development/swcore
[14696] #1 Thread:14404 done (2035 µs)
[14696] #2 Thread:14404 SVN::GetRepositoryRootAndUUID(line 2180) svn_client_get_repos_root Path=D:/sw_development/swcore
[14696] #2 Thread:14404 done (129 µs)
[14696] #3 Thread:13904 SVN::GetWCRevisionStatus(line 2431) svn_wc_revision_status2 Path=D:/sw_development/swcore
[14696] #3 Thread:13904 done (50298 µs)
[14696] #4 Thread:14404 SVNReadProperties::Refresh(line 150) svn_client_proplist4 Path=D:/sw_development/swcore
[14696] #4 Thread:14404 done (4923 µs)
[14696] #5 Thread:11552 SVN::GetRepositoryRootAndUUID(line 2180) svn_client_get_repos_root Path=http://<servername>/svn/di_swcore/branches/IO-System
[14696] #5 Thread:11552 done (406789 µs)
[14696] #6 Thread:11552 SVN::GetRepositoryRootAndUUID(line 2180) svn_client_get_repos_root Path=http://<servername>/svn/di_swcore/branches/IO-System
[14696] #6 Thread:11552 done (201771 µs)
[14696] #7 Thread:11552 SVN::GetRepositoryRootAndUUID(line 2180) svn_client_get_repos_root Path=http://<servername>/svn/di_swcore/branches/IO-System
[14696] #7 Thread:11552 done (167820 µs)
[14696] #8 Thread:11552 SVN::GetHEADRevision(line 2253) svn_client_open_ra_session2 Path=http://<servername>/svn/di_swcore/branches/IO-System
[14696] #8 Thread:11552 done (183206 µs)
[14696] #9 Thread:11552 SVN::GetHEADRevision(line 2261) svn_ra_get_latest_revnum Path=http://<servername>/svn/di_swcore/branches/IO-System
[14696] #9 Thread:11552 done (77341 µs)
[14696] #10 Thread:11552 CLogDlg::LogThread(line 1681) svn_client_mergeinfo_get_merged Path=D:/sw_development/swcore
[14696] #10 Thread:11552 done (211669 µs)
[14696] #11 Thread:11552 SVN::GetRepositoryRootAndUUID(line 2180) svn_client_get_repos_root Path=http://<servername>/svn/di_swcore/trunk
[14696] #11 Thread:11552 done (206523 µs)
[14696] #12 Thread:11552 SVN::GetRepositoryRootAndUUID(line 2180) svn_client_get_repos_root Path=http://<servername>/svn/di_swcore/trunk
[14696] #12 Thread:11552 done (197219 µs)
[14696] #13 Thread:11552 SVN::GetHEADRevision(line 2253) svn_client_open_ra_session2 Path=http://<servername>/svn/di_swcore/trunk
[14696] #13 Thread:11552 done (198691 µs)
[14696] #14 Thread:11552 SVN::GetHEADRevision(line 2261) svn_ra_get_latest_revnum Path=http://<servername>/svn/di_swcore/trunk
[14696] #14 Thread:11552 done (76541 µs)
[14696] #15 Thread:11552 SVN::GetRepositoryRootAndUUID(line 2180) svn_client_get_repos_root Path=http://<servername>/svn/di_swcore/trunk
[14696] #15 Thread:11552 done (198020 µs)
[14696] #16 Thread:11552 CSVNLogQuery::Log(line 412) svn_client_log5
[14696] #16 Thread:11552 done (961534 µs)
[14696] #17 Thread:11552 SVN::GetRepositoryRootAndUUID(line 2180) svn_client_get_repos_root Path=http://<servername>/svn/di_swcore/branches/IO-System
[14696] #17 Thread:11552 done (203087 µs)
[14696] #18 Thread:11552 SVN::GetRepositoryRootAndUUID(line 2180) svn_client_get_repos_root Path=http://<servername>/svn/di_swcore/branches/IO-System
[14696] #18 Thread:11552 done (197997 µs)
[14696] #19 Thread:11552 SVN::GetHEADRevision(line 2253) svn_client_open_ra_session2 Path=http://<servername>/svn/di_swcore/branches/IO-System
[14696] #19 Thread:11552 done (203700 µs)
[14696] #20 Thread:11552 SVN::GetHEADRevision(line 2261) svn_ra_get_latest_revnum Path=http://<servername>/svn/di_swcore/branches/IO-System
[14696] #20 Thread:11552 done (78212 µs)
[14696] #21 Thread:11552 CSVNLogQuery::Log(line 412) svn_client_log5
[14696] #21 Thread:11552 done (292498 µs)
[14696] #22 Thread:12084 SVNReadProperties::Refresh(line 150) svn_client_proplist4 Path=D:/sw_development/swcore
[14696] #22 Thread:12084 done (3157 µs)
[14696] #23 Thread:12084 SVN::PegMerge(line 1142) svn_client_merge_peg5 Path=http://<servername>/svn/di_swcore/branches/IO-System
[14696] #23 Thread:12084 done (3792044 µs)
[14696] #24 Thread:12084 SVN::GetRepositoryRootAndUUID(line 2180) svn_client_get_repos_root Path=D:/sw_development/swcore
[14696] #24 Thread:12084 done (131 µs)
[14696] #25 Thread:12084 SVN::GetRepositoryRootAndUUID(line 2180) svn_client_get_repos_root Path=D:/sw_development/swcore
[14696] #25 Thread:12084 done (85 µs)
[14696] #26 Thread:12084 SVN::GetRepositoryRootAndUUID(line 2180) svn_client_get_repos_root Path=D:/sw_development/swcore
[14696] #26 Thread:12084 done (86 µs)
[14696] #27 Thread:12084 SVNConflictInfo::Get(line 122) svn_client_conflict_get Path=D:/sw_development/swcore/basics_test/CArray_Tests.cs
[14696] #27 Thread:12084 done (2258 µs)
[14696] #28 Thread:12084 SVNConflictInfo::Get(line 146) svn_client_conflict_get_conflicted Path=D:/sw_development/swcore/basics_test/CArray_Tests.cs
[14696] #28 Thread:12084 done (44 µs)
[14696] #29 Thread:12084 SVNConflictInfo::Get(line 159) svn_client_conflict_tree_get_description Path=D:/sw_development/swcore/basics_test/CArray_Tests.cs
[14696] #29 Thread:12084 done (91 µs)
[14696] #30 Thread:12084 SVNConflictInfo::FetchTreeDetails(line 548) svn_client_conflict_tree_get_details Path=D:/sw_development/swcore/basics_test/CArray_Tests.cs
[14696] #30 Thread:12084 done (2019056 µs)
[14696] #31 Thread:12084 SVNConflictInfo::FetchTreeDetails(line 560) svn_client_conflict_tree_get_description Path=D:/sw_development/swcore/basics_test/CArray_Tests.cs
[14696] #31 Thread:12084 done (291 µs)
[14696] #32 Thread:12084 SVNConflictInfo::GetTreeResolutionOptions(line 409) svn_client_conflict_tree_get_resolution_options Path=D:/sw_development/swcore/basics_test/CArray_Tests.cs

Tested with svn.exe, seems to produce the same output as TSVN:
and it hangs...

I will do a manual resolve now.

Stefan

unread,
Sep 7, 2018, 4:23:44 PM9/7/18
to TortoiseSVN
Seems the problem is inside the svn library.
You should report it on the svn mailing list:

Tobias Knauss

unread,
Oct 1, 2018, 12:20:14 PM10/1/18
to TortoiseSVN
My conversation with the SVN mailing list:

On Sun, Sep 30, 2018 at 04:06:08PM +0000, Knauß, Tobias wrote:

> Hello,

>

> First, as suggested on the mailing list page, I should mention that I am not subscribed to the mailing list, so please add me in CC on the responses.

> I also don't know if the mailing list accepts HTML, so I chose plain-text, but this does not allow adding screenshots, so for convenience you may simply look at the conversation at the TortoiseSVN google group, where I first posted about the possible bug in your svn library:

> https://groups.google.com/forum/#!topic/tortoisesvn/qUoGtI8hxJ8

>

> I have added the first and last message here:

>

> -------------------------------------------------------------------

> Message #01, Tobias Knauss, 2018-09-07:

>

> I created a branch at revision 2000 of the trunk.

> I renamed some files in the trunk at revision 2141.

> I edited these files in the branch at revision 2194.

> Now I want to merge the changes from the branch back to the trunk, but it causes a tree conflict because files have been renamed there. This is okay.

>

> Not okay is, that a window pops up and tells me "fetching tree conflict information" and searches back until revision 1359 and hangs there forever. In r1359 we had many edits (files and folders renamed, files deleted) because we converted our code from C++/CLI (.cpp, .h)  to C# (.cs). Somehow this fetching dialog doesn't like that, even though the conflicting files were not part of the commit for r1359.

> <screenshot of TortoiseSVN dialog window "Edit Tree Conflicts", saying

> "Fetching tree conflict information..." and stuck at "checking r1359">

>

> Why does it hang? Why does it search back so far? It's not needed.

 

Hi Tobias,

 

Thank you for your report.

 

There are two known bugs which cause this type of problem.

 

A patch for the first bug has been released in Subversion 1.10.2.

Does your version of TortoiseSVN include Subversion 1.10.2?

 

The second bug has no released fix yet, so this is the likely culprit.

This fix is in the pipeline for upcoming SVN 1.10.3 and also for upcoming SVN 1.11.0. If TortoiseSVN could backport this fix to their pre-release build version and you could test it, that would be appreciated.

 

https://svn.apache.org/r1839662

------------------------------------------------------------------------

r1839662 | stsp | 2018-08-30 13:39:40 +0200 (Thu, 30 Aug 2018) | 17 lines

 

Don't scan for moves for 'local missing' conflicts unless a YCA is known.

 

Prevent the resolver from embarking on an endless search in case of a 'incoming edit vs. local missing' conflict where no YCA can be found which would cap our search through history.

 

Reported by: Dag-Erling Smørgrav <...> https://svn.haxx.se/users/archive-2018-08/0038.shtml

 

* subversion/libsvn_client/conflicts.c

  (find_deleted_rev): Account for a NULL moves-table.

  (find_operative_moves, find_revision_for_suspected_deletion): Make search

   for moves optional. The caller can now pass a NULL moves array to indicate

   that moves should not be searched for.

  (conflict_tree_get_details_local_missing): Only ask for move information if

   a YCA was found.

 

------------------------------------------------------------------------

 

 

Thanks,

Stefan


Reply all
Reply to author
Forward
0 new messages