I would like to chime in on the need to be able to manually align file segments between the different panes.
I am comparing configuration files of DSLAMs.
When I compare the same file with different versions of the same file, file alignment is generally not a problem.
But if I am comparing a DSLAM that has been up for several years with one that is freshly installed, WinMerge has problems detecting points in the files that should be in alignment.
For example, in one configuration section, there are service profiles, spectrum profiles and then finally the individual ports. In a DSLAM that has been up for a long time, there will be many more service and spectrum profiles, before the port configurations start. In a new dslam, the list of profiles is shorter, so the port definitions start sooner. I /need/ to align the port configurations for the tool to be useful. I am suprised that this is not working automatically, because the port config sections are very nearly identical, and each one has the first line that is perfectly identical, eg:
So what ends up happening is the sections I am trying to compare are completely out of alignment, resulting in the inability to use the tool in a useful manner.
It would be useful to have two kinds of alignment, permanent tags so that I can have many alignment points in a given pair of files, and temporary alignment, where I tag two points to align, for a quick compare, then a release to put the file back the way it was.
The permanent tags would be useful for aligning "line 1/1/4/27" with "line 1/1/4/27".
The temporary alignment would allow me to align "line 1/1/4/11" with "line 1/1/7/23" to allow me to compare different configuration sections, where I'm trying to configure different ports the same.
Essentially I see manual alignment a critical function of a tool like this, because sometimes configuration files have many similar sestions that may need to be compared. DSLAM configs are not the only example of where this would be useful. Router configurations, switch configurations, DHCP server configurations are all examples where /different/ configuration sections may need to be compared to accomplish the goal of the user.
In my two versions of the alignment feature described, the teporary alignment function would be ok if you could only do one, but it would not solve my need for the DSLAM, as in the DSLAM each port is configured in 11 different places, so there is a need to have at least 11 different alignment points in any given pair of configuration files. If you only provide the permanent version of the feature, doing quick comparisons between different ports (such as 1/1/4/11 and 1/1/7/27) would require the ability to set and later remove the alignment tag.
I think both types of alignments will be needed, but I can see why this could be difficult if both are used in the same compare session. It is also possible that other people will be able to think up other alignment methods that may require other modes that are different from the two I list.
The bottom line is that not every compare is intended to be between nearly identical files. Many compared will be between files that are known to be vastly different, and the purpose of the comparison is only to compare small parts of a file.
I know I could trim the desired parts of the file, and just compare those... But in the case of my DSLAMs, as an example, there are litterally dozens of points of alignment required for me to compare two port configurations, and that is only possible if I am comparing the entire files.
if I can't align specific points, another option would be for me to give the tool examples of things to look for while aligning files.
So for example I don't need lines like this to be aligned, as they may appear many times in unrelated sections:
But I do need lines like this to be aligned:
So if I could provide a filter that de-prioritized one pattern and increased the priority of another pattern, that might reduce the need for the permanent type of alignment I cited before. If I had that feature, then the case of comparing dissimilar port numbers could be done manually by just having two text editor windows open side by side.
Being able to prioritise the alignment is important also to prevent unintended alignment. So for example:
Does not need to align with:
In this case the lines "line 1/1/4/27" are not the same, and do not beed to be aligned. So I might want to make the "XDSL-Bonding" lines absolutely align, and the "line 1/1/4/27" lines only align within a section that had an absolute alignment.
In summary, I have provided several specific examples of what I would like to see, so the developers can think about it and find the shortest path to providing a useful manual/automated alignment feature to answer this need.
Thanks for your hard work at creating a great tool!