Hi,

I have investigated the issue mentioned in the users group in the thread 
with the same subject as above [1]. I'm providing an analysis and a few 
different patches (choose 1 of those).

The root cause is that CopyUrlsCommand add \n at the end of the copied 
paths. It has the capability to copy multiple paths and URLs so I believe 
this is a good thing for consistency. However it could be modified [2] to 
only emit the \n if more than 1 path is being copied. I believe this is the 
least sensible path, both since it changes external behaviour.

Another solution could be to adjust the consumer of the URL, in 
MergeCommand.cpp, to remove any trailing newline from the URL. See [3].

However I realised that this behaviour only exists on "Merge a range of 
revisions". If doing a "Merge two different trees", the trailing newline is 
filtered already in the dialog. On inspection MergeWizardRevRange.cpp does 
m_urlCombo.GetWindowText(sUrl) while MergeWizardTree.cpp does 
m_urlCombo.GetString(). (MergeWizardTree.cpp actually does both, with 
GetWindowText() to check if the text is a URL). I've made a patch [4] to 
have MergeWizardRevRange.cpp use GetString() just like MergeWizardTree.cpp. 
It is actually reversing part of the changes in r24686 since previously. 
This is the patch I personally prefer, it seems cleaner to remove the \n on 
the source, it also aligns with hor "Merge two different trees" behave.

Kind regards,
Daniel



[1] https://groups.google.com/g/tortoisesvn/c/PHloNjOHids
[2] Attachment CopyUrlsCommand_DontSetLFOnSinglePath.txt
[3] Attachment MergeCommand_RemoveTrailingNewlineFromUrl.txt
[4] Attachment MergeWizardRevRange_GetUrlByGetString.txt

-- 
You received this message because you are subscribed to the Google Groups 
"TortoiseSVN-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tortoisesvn-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tortoisesvn-dev/2310c036-5e36-484b-84d1-4217b844a3fdn%40googlegroups.com.
--- 
C:/Users/danie/AppData/Local/Temp/MergeWizardRevRange.cpp-revBASE.svn001.tmp.cpp
    fre apr 30 18:29:07 2021
+++ C:/Devel/tortoisesvn/src/TortoiseProc/MergeWizardRevRange.cpp       tor maj 
26 22:21:18 2022
@@ -126,0 +127 @@ LRESULT CMergeWizardRevRange::OnWizardNext()
+    sUrl = m_urlCombo.GetString();
--- C:/Users/danie/AppData/Local/Temp/MergeCommand.cpp-revBASE.svn001.tmp.cpp   
fre apr 30 18:29:07 2021
+++ C:/Devel/tortoisesvn/src/TortoiseProc/Commands/MergeCommand.cpp     tor maj 
26 22:10:50 2022
@@ -65,0 +66,4 @@ bool MergeCommand::Execute()
+        // URL copied from the right-click context menu ends in \n. Remove it 
to avoid
+        // errors accessing the repo with a URL ending in %0A.
+        if (wizard.m_url1.Right(1) == '\n')
+            wizard.m_url1 = wizard.m_url1.Left(wizard.m_url1.GetLength() - 1);
--- C:/Users/danie/AppData/Local/Temp/CopyUrlsCommand.h-revBASE.svn001.tmp.h    
fre apr 30 18:35:34 2021
+++ C:/Devel/tortoisesvn/src/TortoiseProc/Commands/CopyUrlsCommand.h    tor maj 
26 22:08:54 2022
@@ -38 +38,2 @@ class CopyUrlsCommand : public Command
-        for (int i = 0; i < pathList.GetCount(); ++i)
+        const auto count = pathList.GetCount();
+        for (int i = 0; i < count; ++i)
@@ -41 +42,2 @@ class CopyUrlsCommand : public Command
-            sUrls += L"\n";
+            if (count > 1)
+                sUrls += L"\n";

Reply via email to