david56048 / pbscc-proxy

Automatically exported from code.google.com/p/pbscc-proxy
0 stars 0 forks source link

"Show Differences" reports "No differences encountered." while there are. #15

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
What steps will reproduce the problem?
1. User A check out an object, say, w_test. 
2. User A update w_test and check it in.
3. User B refresh status on w_test and see changes (round arrow icon shown)
4. User B right click on w_test and pick "Show Differences" menu

What is the expected output? 
Expect to see the side by side comparison of the server and local version.

What do you see instead?
Messagebox of "No differences encountered."

What version of the product are you using? On what operating system?
pbsccsetup_2.01.78

Please provide any additional information below.

Original issue reported on code.google.com by freddie....@gmail.com on 27 Oct 2010 at 5:16

GoogleCodeExporter commented 8 years ago
The test is using "lock.strategy=prop"

Original comment by freddie....@gmail.com on 27 Oct 2010 at 5:23

GoogleCodeExporter commented 8 years ago

Original comment by daggett....@gmail.com on 27 Oct 2010 at 10:39

GoogleCodeExporter commented 8 years ago
We are getting this issue in PB 12.5.1, with SVN 1.7 r22413, and PBSCC 2.01.80.

Sometimes the differences are shown, for a few seconds, particularly when 
logging is turned on. But then after a few seconds, SVN DIFF 
offers to refresh the working file:

"Some File(s) has been changed outside T-Merge. Do you want to load the 
changes?"

And if I answer Yes, the differences disappear.

In 
http://code.google.com/p/pbscc-proxy/source/browse/trunk/src/pbscc.cpp?r=25#954

I see 

                if( ( svni = ctx->svni->get(ctx->lpProjPath,lpFileName))!=NULL ) { 
                        if(!stricmp(svni->owner,ctx->lpUser)){ 
                                _copyfile(ctx,lpFileName, _subst(ctx,lpFileName) ); 
                                buf.sprintf("TortoiseProc.exe /command:diff /path:\"%s\"", _subst(ctx,lpFileName) ); 
                                WinExec(buf.c_str(), SW_SHOW); 
                                _execscc(ctx,"svn revert --non-interactive --trust-server-cert \"%s\"", _subst(ctx,lpFileName) ); 
                                return SCC_OK; 
                        } 
                } 

Why is the svn revert there, and do you think it could be related to this 
problem?

Original comment by toff.til...@gmail.com on 18 Apr 2012 at 8:11

GoogleCodeExporter commented 8 years ago
As a workaround, you can install WinMerge with TortoiseSVN integration. It 
doesn't automatically refresh the underlying files when they change, so the 
differences are maintained in the window.

Original comment by toff.til...@gmail.com on 18 Apr 2012 at 9:50

GoogleCodeExporter commented 8 years ago
probably "revert" is a reason of this problem.
the idea of this code is 
to copy changed object over work copy, 
then call diff, then revert changes from work copy.

it's possible to use 
TortoiseProc.exe /command:diff /path:%1 /path2:%2
in this case revert is not needed.

Original comment by daggett....@gmail.com on 19 Apr 2012 at 8:40

GoogleCodeExporter commented 8 years ago
Hi all,
I can propose my "local patch" in attachment.

It add 3 registry keys :

- svndiff_delay : a delay in milliseconds to wait between "TortoiseProc.exe" 
and "svn revert"
- svn.diffmethod : "0" is for previous method, "1" is to create a temp copy of 
the file to be compared, running TortoiseMerge then cleaning up the temporary 
file.
- svn.postupdatecmd : allow to run Tortoise Hooks after updates. (eg: 
"TortoiseProc.exe /Command:update /Path:\"%s\" /closeonend:1")

Original comment by famille....@gmail.com on 19 Nov 2012 at 3:39

Attachments: