Giter VIP home page Giter VIP logo

winmerge / winmerge Goto Github PK

View Code? Open in Web Editor NEW
5.7K 90.0 738.0 473.34 MB

WinMerge is an Open Source differencing and merging tool for Windows. WinMerge can compare both folders and files, presenting differences in a visual text format that is easy to understand and handle.

Home Page: https://winmerge.org/

License: GNU General Public License v2.0

C++ 65.43% C 14.98% Makefile 0.05% Perl 0.18% Inno Setup 16.04% Pascal 0.05% Ruby 0.01% Verilog 0.03% Python 0.49% Batchfile 0.95% Clarion 0.01% VHDL 0.02% PowerShell 0.37% Visual Basic 6.0 0.46% JavaScript 0.90%
c-plus-plus winmerge windows diff merge image image-diff mfc compare-files win32

winmerge's Introduction

logo

WinMerge

Build status CI sourceforge.net downloads Github Releases All Translation status

WinMerge is an open source differencing and merging tool for Windows. WinMerge can compare files and folders, presenting differences in a visual format that is easy to understand and manipulate.

Build Requirements

Visual Studio 2017

  • Community, Professional or Enterprise Edition
  • VC++ 2017 latest v141 tools
  • Visual C++ compilers and libraries for (ARM, ARM64)
  • Windows XP support for C++
  • Visual C++ MFC for (x86 and x64, ARM, ARM64)
  • Visual C++ ATL for (x86 and x64, ARM, ARM64)
  • Windows 10 SDK

Visual Studio 2019

  • Community, Professional or Enterprise Edition
  • MSVC v142 - VS 2019 C++ (x64/x86, ARM, ARM64) build tools (Latest)
  • C++ MFC for latest v142 build tools (x86 & x64, ARM, ARM64)
  • C++ ATL for latest v142 build tools (x86 & x64, ARM, ARM64)
  • Windows 10 SDK

Visual Studio 2022

  • Community, Professional or Enterprise Edition
  • MSVC v143 Buildtools (x64/x86, ARM, ARM64)
  • C++ MFC for latest v143 build tools (x64/x86, ARM, ARM64)
  • C++ ATL for latest v143 build tools (x64/x86, ARM, ARM64)
  • Windows 10 SDK

Other utilities/programs

  • git
  • Inno Setup 5.x and 6.x
  • 7-Zip
  • Python
  • Pandoc
  • MSYS2 and MSYS2 packages (po4a and diffutils)

How to Build

git clone --recurse-submodules https://github.com/WinMerge/winmerge
cd winmerge
DownloadDeps.cmd
BuildAll.vs2022.cmd [x86|x64|ARM|ARM64] or BuildAll.vs2019.cmd [x86|x64|ARM|ARM64] or BuildAll.vs2017.cmd [x86|x64|ARM|ARM64]

Folder Structure

Source code for the WinMerge program, its plugins, filters, setup program, and various utilities are all kept in the subfolders listed below.

The changelog file is in Docs/Users/ChangeLog.md and it documents both user-visible and significant changes.

Subfolders include:

  • Docs
    Both user and developer documentation, in different subfolders.
    Can be browsed by opening index.html in the Docs folder.

  • Src
    Source code to the WinMerge program itself.

  • Plugins
    Source code and binaries for WinMerge runtime plugin dlls & scripts.

  • Filters
    WinMerge file filters which are shipped with the distribution.

  • ArchiveSupport
    Source code for the Merge7z dlls, which connect WinMerge with 7-Zip.
    Also this folder is required to compile WinMergeU.exe.
    There is also a standalone installer for Merge7z dlls.

  • Externals
    This folder contains several libraries whose sources come from outside WinMerge project.
    They are stored here for convenience for building and possibly needed small changes for WinMerge.
    Libraries include an XML parser and a regular expression parser.

  • Installer
    Installer for WinMerge.

  • Tools
    Various utilities used by WinMerge developers; see readme files in each.

  • ShellExtension
    Windows Shell (Explorer) integration.
    Adds menuitems to Explorer context menu for comparing files and folders.

  • Testing
    A suite of test diff files and a script to run them and report the results.
    This folder also has a Google Test subfolder containing unit tests made with Google Test Framework.

  • Build
    This folder gets created by the compiler when WinMerge is compiled.
    It contains compiled executables, libraries, the user manual, etc.

  • BuildTmp
    This folder gets created by the compiler when WinMerge is compiled.
    It contains temporary files created during the compilation and can be safely deleted.

How to CONTRIBUTE

You will need to fork the main Winmerge repository and create a branch on that fork

Your new code needs to follow Eric Allman indentation

When your code is ready for a review/merge create a pull request explaining the changes that you made

How to RUN and DEBUG

The winmerge folder has different Visual Studio solution files (.sln) that you can use to build, debug and run while you test your changes

If you have run any of the BuildAll scripts you can run WinMerge from path \Build\X64\Release\WinMergeU.exe if your architecture is not X64 look for any of the other folders generated after the build has finished

Another way to Debug, run the exe from previous step, then from VS attach to the running process.

winmerge's People

Contributors

bovirus avatar christianlist avatar datadiode avatar efi99 avatar eltociear avatar gerundt avatar greymerlin avatar hordi avatar hugok79 avatar kayazeren avatar kimmov avatar lippe35 avatar marcello-mco avatar marcellomco avatar miroslaw-zylewicz avatar mr-update avatar patriccollu avatar pgert avatar qosobrin avatar rockytdr avatar sdottaka avatar slolo2000 avatar stonee-k avatar stoyandimitrov avatar tichij avatar timon34 avatar tjmprm77 avatar venusgirl avatar wvxwxvw avatar yingang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

winmerge's Issues

Invalid by default the 3rd File or Folder Option and hide Compare button

Issue: When calling WinMerge using Unity Collab button,
The default 3rd File or Folder Option is invalid. The field contains "U:\e" as for example.
And is difficult for a beginner to understand why the Compare button is not working since is deactivated.

Solution: in the input field replace "U:\e" with an empty string by default.
option

Files marked as different in "Modified Date" compare mode although modification dates are equal

WinMerge Version: 2.16.0.0
Windows Version: 10 x64

I compared two directories using the "Modified Date" compare mode. WinMerge marked files as different although their modification dates are equal. Here is a screenshot with two test folders, each containing a single file, both having the same modification date:

winmerge wrong result

In the German file properties dialogue, "Geändert" translates to "Modified". U:\ is a network share on a QNAP NAS formatted with ext4 and accessed via SMB. D:\ is an external USB 3.0 drive formatted with NTFS.

In addition, initially I observed WinMerge picking up the "Accessed"-date ("Letzer Zugriff") instead of the "Modified"-date in the result list when falsely indicating files with equal modified dates as different. But when I used the testfile/-folder, it picked up the modified dates correctly and still displayed the files being different.

I WinMerge 2.14.0.0 I do not observe this problem.

Digitally sign packages

Please digitally sign WinMerge, so users aren't met with this:
image

This is especially problematic because you ship your binary download on SourceForge, a website known for injecting "extra stuff" into downloads, and without a digital signature, there's no way to know if this install has been tampered with by any 3rd party.

There's a few free options out there for open source projects.

Line filters in prediff?

Hello there,

while I found [this|http://regexfilterforw.sourceforge.net/], I haven't been able to get it to work. I'm using Winmerge from command line almost exclusively, and my usecase is that I'd like to ignore certain changes by regex.
Is there a way to tell WinMerge not to mark a change if it is
LINE<A>MORELINE <-> LINE<B>MORELINE?
If yes, how? If no, could you include it? I would appreciate it a lot.

Is there a way to tell WinMerge not to open if I call it via command line and one of the files doesn't exist?

Thank you for making this.

new files PropMarkerColors (.h and .cpp) missing in jp-138 release

HI ... the two new (and WIP) files PropMarkerColors.h and PropMarkerColors.cpp are missing from this newest jp-138 release. The PropMarkerColors.h file is referenced at PreferencesDlg.h (21). And the .vcxproj file shows that both files are necessary for the compile. This WIP is from commit "editlib: Implement Marker feature (WIP)" c1d66d6. (These are the only two files that I noticed that are missing.) Therefore WinMerge cannot compile successfully ...

See also Pull #36, which is related, but different.

Thanks !!

Three way merge

Is there a way to start a three way merge with a Meld-like window placement (output results in the middle window)? I have not found a way to do it with a command line.

Frustrating text selection bug

In the text editor, double click on any word, e.g. test

The entire word is selected. Now press Shift+Left.

Expected: Selection should shift one step to the left, resulting in a selection of tes.
Actual: Selection is lost!

Updated brazilian portuguese translation plus report

Hi, i am Felipe and here is an update i made for the translation i made more than 9 years ago (it's good to see winmerge back after so many years inactive). It's for Winmerge 2.16.0.0.

I want to report that there are 2 entries for brazilian portuguese in the translation's page, the empty one can be removed without any problem. ;)

The dialog box for the settings needs to be able to auto-resize itself to become bigger to give space for translated words that many times are bigger in brazilian portuguese or other languages, several phrases can't be fully seen.

Brazilian.zip

Version Control missing

Prior to 2.16.0, in the options there is a section for Version Control. We used this to point to an application that we made which automatically checks out files from Visual Studio Source Control when you saved a file.

Can this feature be brought back?

Publish 2.16.x release as actual release

Hello,

Thanks for having fixed this assertion bug in Winmerge:
https://sourceforge.net/p/winmerge/bugs/2214/

I see it the fix is available in a preview version download (2.16.1 or .2)

However, would it be possible to release a hotfix version for this kind of blocking errors? Many regular users don't drill down into preview versions and will either stop using the product or log the issue again.

I understand this is an open source project and appreciate the community efforts.

If a release is coming very soon, please ignore this message :)

Thanks,

Bernard

Give this project a better name

Reacting to Joe D's issue 74 at BitBucket.org, and to get this important discussion into this repository as well ...

Joe D said ...

I used WinMerge 2011 for a while until I discovered this project which adds a lot of functionality. I want my team to start using it, but the problem is I don't know what to call it.

For now I'm calling it WinMerge Takashi, but I don't think that is very clean. Please add a little branding to differentiate from the other projects out there. Put the name into the title bar and the "About WinMerge..." screen so people can identify the software.

I also found your website which calls it "WinMerge Japanese version."

Some thoughts: WinMerge JP WinMerge TK WinMerge 3

Here is my reply ...

Two Comments ...

  1. I agree with Joe D that a name other than simply WinMerge would be a good idea (especially because of the title bar visibility issue). Locally I've used WinMergeJP and more recently WinMergeV2. Neither seems completely satisfactory; I've never really liked the concept of "v2" because the original WinMerge was itself on version 2.14.0 when this project was forked. WinMerge3 shouldn't be considered, because the "official" follow-on project to the original WinMerge is already called WinMerge3 (its here on BitBucket.org and here officially), even though it appears to be dead before it got off the ground (its most recent update was in early 2011).

    Google seems to know of this project as WinMerge-v2. All of the other WinMerge follow-on projects seem to be contemplating what they should call themselves; I've not seen any resolve this problem. Maybe we should just settle on WinMergeV2 ... ?

  2. I think it is important to move away from using Thingamahoochie Software as the base registry key - this project no longer belongs to them. And there are various registry settings that are new to this project. And I like to have my old, well modified, copy of the original WinMerge 2.13.20 simultaneously installed (if only for various comparisons); the registry overlap is not too awkward yet, but it could get bad at any time.

    I would be eager and willing to contribute the necessary code for changing to whatever new registry key name that @sdottaka would select, including code to appropriately migrate existing
    Thingamahoochie registry entries.

How to save tabs?

Hi

Is there a way to save open tabs?
I'm using WinMerge to compare a lot of folders, and it's difficult to open them every time.

Maybe they could be saved in a project? It seems like only the most recent compare is saved in a project, although the project XML seems to indicate that it can hold multiple <paths>

thanks

crashed multiple times today

I was copying 8 to 40 k chunks of text into the program. On occassion it would crash mostly when I was deleting the text from one side of the compare. I will try to find a repeatable crash. But it did not happen all the time... This is not from openning a file and comparing. I paste text directly in the compare windows.

CreateTranslatedRcFiles needs an update

"CreateTranslatedRcFiles" seems to expect that the PO-file from which it is to make the RC-file ends with double-return (a blank line), followed by a NULL-terminator. Otherwise it won't translate the last string, but instead use the original (english) text for that string. At least on newer versions of PO-edit, this double-return is not made. Can't make out anything of the VB-script myself.

Visual Studio merge is not working with version 2.16.0

After configuring Visual Studio with Visual Studio Team Foundation Server to merge with WinMerge
image
A merging operation opens a window with three path
image
But the third path is invalid because the file doesn't exist yet... and the merge operation can not be do
This configuration worked with an older version of winmerge (I can't tell what version)

Editing in WinMerge cause unexpected modification.

Hi.

Editing in WinMerge cause unexpected modification.
WinMerge version:123(happen in other version too)

diff --git a/Trinity b/Trinity
index 3cb9924..ba52e11 100755
--- a/Trinity
+++ b/Trinity
@@ -2617,7 +2624,7 @@ sub show_lit_citation {
         . "Grabherr MG, Haas BJ, Yassour M, Levin JZ, Thompson DA, Amit I, Adiconis X, Fan L,\n"
         . "Raychowdhury R, Zeng Q, Chen Z, Mauceli E, Hacohen N, Gnirke A, Rhind N, di Palma F,\n"
         . "Birren BW, Nusbaum C, Lindblad-Toh K, Friedman N, Regev A.\n"
-        . "Nature Biotechnology 29, 644鈥?52 (2011)\n"
+        . "Nature Biotechnology 29, 644鈥?52 (2011)\n"
         . "Paper: http://www.nature.com/nbt/journal/v29/n7/full/nbt.1883.html\n"
         . "Code:  http://trinityrnaseq.sf.net\n\n\n";
 
hexdump result:
00000000  64 69 66 66 20 2d 2d 67  69 74 20 61 2f 54 72 69  |diff --git a/Tri|
00000010  6e 69 74 79 20 62 2f 54  72 69 6e 69 74 79 0a 69  |nity b/Trinity.i|
00000020  6e 64 65 78 20 33 63 62  39 39 32 34 2e 2e 62 61  |ndex 3cb9924..ba|
00000030  35 32 65 31 31 20 31 30  30 37 35 35 0a 2d 2d 2d  |52e11 100755.---|
00000040  20 61 2f 54 72 69 6e 69  74 79 0a 2b 2b 2b 20 62  | a/Trinity.+++ b|
00000050  2f 54 72 69 6e 69 74 79  0a 40 40 20 2d 32 36 31  |/Trinity.@@ -261|
00000060  37 2c 37 20 2b 32 36 32  34 2c 37 20 40 40 20 73  |7,7 +2624,7 @@ s|
00000070  75 62 20 73 68 6f 77 5f  6c 69 74 5f 63 69 74 61  |ub show_lit_cita|
00000080  74 69 6f 6e 20 7b 0a 20  20 20 20 20 20 20 20 20  |tion {.         |
00000090  2e 20 22 47 72 61 62 68  65 72 72 20 4d 47 2c 20  |. "Grabherr MG, |
000000a0  48 61 61 73 20 42 4a 2c  20 59 61 73 73 6f 75 72  |Haas BJ, Yassour|
000000b0  20 4d 2c 20 4c 65 76 69  6e 20 4a 5a 2c 20 54 68  | M, Levin JZ, Th|
000000c0  6f 6d 70 73 6f 6e 20 44  41 2c 20 41 6d 69 74 20  |ompson DA, Amit |
000000d0  49 2c 20 41 64 69 63 6f  6e 69 73 20 58 2c 20 46  |I, Adiconis X, F|
000000e0  61 6e 20 4c 2c 5c 6e 22  0a 20 20 20 20 20 20 20  |an L,\n".       |
000000f0  20 20 2e 20 22 52 61 79  63 68 6f 77 64 68 75 72  |  . "Raychowdhur|
00000100  79 20 52 2c 20 5a 65 6e  67 20 51 2c 20 43 68 65  |y R, Zeng Q, Che|
00000110  6e 20 5a 2c 20 4d 61 75  63 65 6c 69 20 45 2c 20  |n Z, Mauceli E, |
00000120  48 61 63 6f 68 65 6e 20  4e 2c 20 47 6e 69 72 6b  |Hacohen N, Gnirk|
00000130  65 20 41 2c 20 52 68 69  6e 64 20 4e 2c 20 64 69  |e A, Rhind N, di|
00000140  20 50 61 6c 6d 61 20 46  2c 5c 6e 22 0a 20 20 20  | Palma F,\n".   |
00000150  20 20 20 20 20 20 2e 20  22 42 69 72 72 65 6e 20  |      . "Birren |
00000160  42 57 2c 20 4e 75 73 62  61 75 6d 20 43 2c 20 4c  |BW, Nusbaum C, L|
00000170  69 6e 64 62 6c 61 64 2d  54 6f 68 20 4b 2c 20 46  |indblad-Toh K, F|
00000180  72 69 65 64 6d 61 6e 20  4e 2c 20 52 65 67 65 76  |riedman N, Regev|
00000190  20 41 2e 5c 6e 22 0a 2d  20 20 20 20 20 20 20 20  | A.\n".-        |
000001a0  2e 20 22 4e 61 74 75 72  65 20 42 69 6f 74 65 63  |. "Nature Biotec|
000001b0  68 6e 6f 6c 6f 67 79 20  32 39 2c 20 36 34 34 e2  |hnology 29, 644.|
000001c0  80 93 36 35 32 20 28 32  30 31 31 29 5c 6e 22 0a  |..652 (2011)\n".|
000001d0  2b 20 20 20 20 20 20 20  20 2e 20 22 4e 61 74 75  |+        . "Natu|
000001e0  72 65 20 42 69 6f 74 65  63 68 6e 6f 6c 6f 67 79  |re Biotechnology|
000001f0  20 32 39 2c 20 36 34 34  e2 80 3f 35 32 20 28 32  | 29, 644..?52 (2|
00000200  30 31 31 29 5c 6e 22 0a  20 20 20 20 20 20 20 20  |011)\n".        |
00000210  20 2e 20 22 50 61 70 65  72 3a 20 68 74 74 70 3a  | . "Paper: http:|
00000220  2f 2f 77 77 77 2e 6e 61  74 75 72 65 2e 63 6f 6d  |//www.nature.com|
00000230  2f 6e 62 74 2f 6a 6f 75  72 6e 61 6c 2f 76 32 39  |/nbt/journal/v29|
00000240  2f 6e 37 2f 66 75 6c 6c  2f 6e 62 74 2e 31 38 38  |/n7/full/nbt.188|
00000250  33 2e 68 74 6d 6c 5c 6e  22 0a 20 20 20 20 20 20  |3.html\n".      |
00000260  20 20 20 2e 20 22 43 6f  64 65 3a 20 20 68 74 74  |   . "Code:  htt|
00000270  70 3a 2f 2f 74 72 69 6e  69 74 79 72 6e 61 73 65  |p://trinityrnase|
00000280  71 2e 73 66 2e 6e 65 74  5c 6e 5c 6e 5c 6e 22 3b  |q.sf.net\n\n\n";|
00000290  0a 20 0a                                          |. .|
00000293

[Feature Request] New Display Columns: Dimensions + Size Difference

When comparing folders with e.g. optimized images, it would be super nice if one could not only add the "File Size" columns, but also

  1. the resulting "Size Difference" (calculated as the difference between the two sizes of the files) and
  2. display the "Dimensions" of an image as check that the image is still the same size.

(Correct place here to suggest new features? I saw there also are issues on BitBucket, SourceForge and a forum)

Picture compare - show "files are identical" in statusbar

Right now, when two pictures are the same, you will get a messagebox telling you this. There you can disable this message box (see picture).

Problem:

  • Having a box you have to close each time is annoying
  • But when the box is disabled, you have no quick way to see this information if both pictures are identical.

Solution:

  • Give the information that the pictures are identical always also in the statusbar.
    See pic: https://imgur.com/a/9kFBR of how this could look like.

Thank you

Show/hide recursive folder comparison results by complex filter combination; ex. comparison result and extension

Sometimes when using recursive folder comparison, we have certain classes of comparisons that we wish to not have to sort through.

For example; comparing two builds.

If a file extension is a .dll and the comparison result is that the binaries are different, I want to automatically hide this result (different compiled build version, etc.).
If a file extension is a .dll and the comparison result is that the binaries are identical, I want to show this result (build may not have triggered or built everything).
If a file extension is a .dll and the comparison result is that the binary is only present on the left or right, I want to show this result (new/missing assemblies).
If a file extension is a .cpp file, and the comparison result is that they are anything but identical, I want to show this result (source changes).
If a file extension is a .gif file, and the dates are different, I want to show this result, otherwise hide. (perhaps contrived; should not be pulling an updated resource).

Is this better suited to a plugin or to modifications to the shell?

This functionality does work my sorting/selecting files and choosing to hide them, but it can be a tedious process and any status of hidden items is lost upon refreshing the comparison.

Build requirements?

Hi.
What is the minimum VS version that can build the project?
I have access only to VS 2008 and 2010.
Is it possible to build with them? Or did you already use language features from above.
It was possible with the old WinMerge.

compare folders in remote connection

This is a new feature request. Compare a folder in local machine and in another machine (connected via Remote Desktop Connection, Webex etc..) This might be done by generating a signature file from folder content. Signature file (could be a JSON which represents the content) generated from remote machine folder and signature file generated from local machine folder could be compared

Location pane on binary compare

Hi, today I just found your fork of WinMerge, nice work.
When I do a binary compare (for example of two jpeg files) there is no location pane. Could you please implement this, so that you have a location pane in binary compare mode please? I need this quite often to have a quick overview what parts of a bigger file has differences.
Thank you

Additional Information Regarding VS2017 C++17 vs WinMerge

Thank You for merging my Pull Request #47. I fear that it is just the first crack in a "Pandora's Box" situation.

I have just today discovered this note (https://blogs.msdn.microsoft.com/vcblog/2017/12/08/c17-feature-removals-and-deprecations/ dated 8 December 2017) on MSDN's Visual C++ Team Blog.

It explains in much greater detail how VS2017 (and beyond) will be approaching the C++14 and C++17 standards, especially the features that have been and will be deprecated. Pay particular attention to comments regarding std:tr1, which is the issue addressed in PR #47; note that this is really a GoogleTest framework problem which that project will have to solve.

As mentioned in PR #47, I was not able to eliminate the problem by changing the language setting to C++14. I now see that, beginning with VS2017 version 15.5, the new deprecation warning is forced to be an new error by C++14 (the default language), in preparation for the eventual elimination of the std:tr1 feature in C++17.

  • So today I made a quick test: I explicitly set the "C++ Language Standard" property to C++17 for our UnitTests project. Alas .... there are now 1608 new compile errors. Most, but not all, are in the GoogleTest framework. Many, perhaps half, can be silenced by defining one (or more) of the new _SILENCE_CXX17_xxx symbols. Most of the remaining errors directly relate to the fact that indeed C++17 no longer supports the std::tr1 construct (which the GoogleTest framework uses extensively). But there remains five new errors, all in cregexp_poco.cpp that all relate to the C++17 elimination of std::auto_ptr

  • So I decided to make another quick test. I set the language for the Merge project to C++17. Alas ... there are now 618 new errors! Most can be silenced by defining one or more of the _SILENCE_CXX17_xxx symbols (as with UnitTests); these new silence-able errors are all in the boost library!! There remain 11 errors that cannot be silenced: eight in cregexp_poco.cpp and three in MergeDoc.cpp.

So ... all of this leaves me with a number of thoughts ...

  • WinMerge has no immediate need to have the "C++ Language Standard" property set to C++17. It should be left at the VS2017 15.5 default, or be explicitly set to VS++14. And all will continue to compile correctly until some time in the future when C++17 is forced upon us (or a future C++14 adds more deprecation errors).

  • Now that these "future" C++17 problems have been detected, we should have a plan, even if informal and vague, on how we want to handle this.

    • The problems in MergeDoc.cpp should be straightforward and easy to fix. (I will attempt to fix.)
    • The problems in cregexp_poco.cpp should be straightforward and easy to fix. This would add a local changes to the poco software; I'm not aware of any previous significant local changes. It may be that poco has already solved this particular problem; if so we should adopt their code. (I will look into this and/or attempt to fix it directly.)
    • I doubt that we have any changes to the boost library other than my (_MSC_VER > 1912) kludge (at least I hope nothing of significance). Since boost is an active development project, we should wait until they make the appropriate changes.
    • To the extent that poco and/or boost have addressed these issues, we should study the effort necessary to upgrade to newer versions of these libraries. I am not really familiar with either of these libraries in a deep technical way; I guess that I should study them and broaden my horizons.
    • I haven't yet tried the other solutions, namely FreeImage and WinIMerge and a few others, to see if this deprecation issue exists with C++17. I know that they all compile cleanly with VS2017 15.5.1 using the default C++14 standard.

Thank you all for your attention.

I would appreciate comments and feedback!

HighDPI support

Some of UI elements are displayed too small with HighDPI envrionment.
I use Version 2.14.0.80+-jp-80.

Please look at below pictures.

image

  • Font size of Location Pane window caption text is too small compared to other UI elements.
  • Diff Pane window caption text is also too small

image

  • Width of status bar panel is too short, so the text (in this case, 3個の差異が見…られます?) is not fully displayed.

image

  • MDI window's minimize-maximize-close icons look very big with above screenshot but once you maximize the window, those icons are displayed at the right side of menu items and icons are somewhat small.

Option to show "picture identical" column in main window

jpeg pictures can be different when you compare them byte-by-byte thanks to different EXIF. Yet the picture itself can be identical when compared without exif. The picture compare shows this information in the statusbar when you open two files.

I propose also adding an option to show a column in the main window, that will show this information directly for all pictures (maybe also with an option in the "View" menu to toggle showing only/no picture identical files).
Example: https://imgur.com/a/gC115

Thank you.

Temporary files could not be created

I repeatedly got the error message Temporary files could not be created. Check your temporary path settings.
What is the reason for this error?
I close WinMerge, open again and it works.
I just don't want to close WinMerge every time, because I have compares open I'd like to keep for the moment.

grafik

Thanks for keeping the project alive and releasing new Versions, 👍
Bernhard

[Feature Request] Option for combining two different line

This tool is very useful for merging.
but some time user will need to combine the difference between two files.
as below files example:

file1.xml
image

when the tool shows the difference between files
I can only choose one of them. using "copy to right" or "copy to left"
I just want one more menu lets call it "combine and copy to left" or "combine and copy to right"
after choosing this option result will get like

file1.xml after "combine and copy to left"

image

file1.xml after "combine and copy to right"
image

Winmerge stuck when comparing folders in Windows 10

In Windows 10, there's an issue when I try to compare two folder on my desktop.

This problem happens inside the application and outside, in Explorer (by selecting the two folders and right click on it).
It open the two-view tab, and the comparison (and the progress bar) stucks at 0%. After that, WinMerge will be completely unstable. I cannot stop the comparison, neither I can close the window. I need to kill the process from the Task Manager.

Windows 10 Enterprise, user without administrative privilegies.
Winmerge v. 2.14.0.118+-jp-118

Please, let me know if and how I can give you more debugging details.

A crash

Latest release, Win 10 Home, x64, default settings.
STR:

  1. Open WinMerge.
  2. Open Edit > Options.
  3. Press Ctrl-N.
  4. In the left pane type:
a
a
  1. Press F5 to initiate the syntax highlight.
  2. In the very last line, the grey one, of the right pane type:
a

Regarding #80

Using F5 to kick in the syntax highlight also could be used to emulate the Automatic rescan in the STR after step 4. (for previous release version). Both issues seem related but I can not find common STR.

At least now is clear why Automatic rescan is needed for the crash.

moved block limit?

Recently I tried to use winmerge (both 2011 and your JP version), to compare a sessionstore.js to sessionstore.bak (firefox style session files) after restarting the browser and having lost my tabs.
I tried the compare because there was a some time difference between them and I didn't remember when I had browsed last. In the end, the difference was a small chunk of browser metadata or something near the beginning of the file and an extra closing } at the very end of the file.
An old 32bit version of winmerge 2011 that I was using had a very hard time with the file, because, as you may know, these files are a single very long line of text with no linebreaks, so I guess it had a hard time reflowing the text and being responsive at the same time.
The result is, that version could highlight the difference within the file, but when I tried to do anything it would become unresponsive and I couldn't edit it to see if it became identical or there was something else.
So I went to see if there was any update or any other graphical comparer, finding an updated WinMerge2011 and your WinMerge JP (as it was named in alternativeto.net). I downloaded the 64bit version to make sure memory wasn't a problem.

But now both 2011 and JP just couldn't find the difference within the single 4567140 characters long line in the file. With a lot of patience due to the application taking a long time responding, I could edit the file to insert a couple of line breaks, one at 50% of the file and another at about 25%. This shortening of both files to a more manageable line lenght did the trick and now WM did highlight the difference.

The question is, then, how long of a line will WM manage before it gives up looking for a moved/added block? Can you fix it? Not that I expect having to deal with crashed browser session files this too often, hopefuly.

[Feature request] Qt version of WinMerge

Hello. I'm a previous Windows user, and there are only two programs that I miss: Notepad++ and WinMerge.

Yes, there's Meld, but it's not the same thing... and I don't want to install Wine, is a vehicle for viruses.

Do you think it's possible to see a Linux version for WinMerge in a future?

Thank you anyway.

Assertion failed!

Just started winmerge-2.16.0-x64 ( installed or portable makes no difference) and „Assertion failed!“ occurred:

Assertion failed!

Program: C:\Program Files\WinMerge\WinMergeU.exe
File: c:\dev\winmerge-stable\buildtmp\src\src\c...\varprop.cpp
Line: 148

Expression: m_vtype == VT_INT

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts

(Press Retry to debug the application - JIT must be enabled)

Drag'n'Drop with phantom characters

When using Drag'n'Drop to external programs, the second item has often additional characters, which don't belong to the filename. Missing terminating zero?

screenshot

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.