THE PROBLEM
In setting up the merge tool to resolve conflicts, the files sent to the merge tool are not correct for the content they contain. I have tried searching Stack Overflow, but have not found an answer.
Details
I'm new to GIT. In trying to learn more, I've set up a private repo on Bitbucket. I have Windows 7 64-bit and the following software:
- GIT Client: SmartGit/Hg
- Code Editor: IntelliJ IDEA Ultimate
- Merge: P4Merge || KDiff3
When KDiff3 is called from SmartGit/Hg:
(A) C:\Users\Username\AppData\Local\Temp\smartgit6393324384790956404tmp\compare_base_2787531226782357806_README.md
(B) C:\Users\Username\AppData\Local\Temp\smartgit6393324384790956404tmp\compare_ours_2686269382530657828_README.md
(C) C:\Users\Username\AppData\Local\Temp\smartgit6393324384790956404tmp\compare_theirs_8849401324186420794_README.md
(OUTPUT) D:\Path\to\project\README.md
When KDiff3 is called from IDEA:
(A) C:\Users\Username\AppData\Local\Temp\Merge_Result2324777776464644375.md
(B) C:\Users\Username\AppData\Local\Temp\Local_Changes7034162268721107201.markdown
(C) C:\Users\Username\AppData\Local\Temp\Changes_from_Server__revision_d7bcd6bd85df4f7bae648786dfa944825991b4f3_1371061438544389037.markdown
(OUTPUT) D:\Path\to\project\README.md
- (A) correctly displays the base, in the case of IDEA "Merge_Result" is confusing, but at least it has the base data.
- The contents of (B) is HEAD data where it should be LOCAL.
- The contents of (C) is displaying LOCAL data where it should be HEAD.
- (OUTPUT) is the correct location of conflicted file that the merge/resolution should be saved to.
My understanding is that local data is in mine/ours/yours/local files and the head data should be in theirs/remote/head files.
Settings
SmartGit/Hg P4Merge settings:
File Pattern: *.md
Command: P:\Program Files\Perforce\p4merge.exe
Arguments: ${baseFile} ${leftFile} ${rightFile} ${mergedFile}
SmartGit/Hg KDiff3 settings:
File Pattern: *.md
Command: P:\Program Files (x86)\KDiff3\kdiff3.exe
Arguments: ${baseFile} ${leftFile} ${rightFile} -o ${mergedFile}
I'll update the file pattern once I resolve the problem.
IDEA KDiff3 settings:
Path to executable: P:\Program Files (x86)\KDiff3\kdiff3.exe
Parameters: %2 %1 %3 -o %4
The question
Both P4Merge and KDiff3 have the same problems, which makes me think something may be wrong with my local GIT install, but I have no idea where to look next to troubleshoot and resolve this. What have I done wrong and how can I fix it?
I'd like to get on with learning Git, but I can't focus on that if I am worried about the accuracy of my diff and merge tools (or the data they are working with.)
References
P4Merge: http://www.perforce.com/perforce/doc.current/manuals/cmdref/P4MERGE.html
KDiff3: http://kdiff3.sourceforge.net/doc/documentation.html
I have three more, but I don't have enough reputation to post more links. They amount to Bitbucket, Araxis documentation, and a Stack Overflow page that references undocumented options/arguments/parameters in P4Merge. I'm not using Araxis, but they have some good instructions on where to find your conflict resolver settings in a number of different programs.
Creating the conflict
README.md (first version)
# This is my README
This file has been modified BASE
Pull.
README.md (edited, committed, approved through Bitbucket/webpage)
# This is my README
This file has been modified SERVER
README.md (modified locally)
# This is my README
This file has been modified LOCAL
Stash changes. Pull. Apply Stash. Congratulations! You now have a conflict that needs to be resolved.