# $2 - file in branch1 SHA1 (or empty)
# $3 - file in branch2 SHA1 (or empty)
# $4 - pathname in repository
-# $5 - orignal file mode (or empty)
+# $5 - original file mode (or empty)
# $6 - file in branch1 mode (or empty)
# $7 - file in branch2 mode (or empty)
#
if orig_hash:
# modified in both
if file1_hash and file2_hash:
- # if modes are the same (git-read-tree probably dealed with it)
+ # if modes are the same (git-read-tree probably dealt with it)
if file1_hash == file2_hash:
- if os.system('git-update-cache --cacheinfo %s %s %s'
+ if os.system('git-update-index --cacheinfo %s %s %s'
% (file1_mode, file1_hash, path)) != 0:
- print >> sys.stderr, 'Error: git-update-cache failed'
+ print >> sys.stderr, 'Error: git-update-index failed'
__conflict()
- if os.system('git-checkout-cache -u -f -- %s' % path):
- print >> sys.stderr, 'Error: git-checkout-cache failed'
+ if os.system('git-checkout-index -u -f -- %s' % path):
+ print >> sys.stderr, 'Error: git-checkout-index failed'
__conflict()
if file1_mode != file2_mode:
print >> sys.stderr, \
'output': path }) == 0
if merge_ok:
- os.system('git-update-cache -- %s' % path)
+ os.system('git-update-index -- %s' % path)
__remove_files()
sys.exit(0)
else:
print >> sys.stderr, \
'Error: three-way merge tool failed for file "%s"' % path
# reset the cache to the first branch
- os.system('git-update-cache --cacheinfo %s %s %s'
+ os.system('git-update-index --cacheinfo %s %s %s'
% (file1_mode, file1_hash, path))
if keeporig != 'yes':
__remove_files()
if os.path.exists(path):
os.remove(path)
__remove_files()
- sys.exit(os.system('git-update-cache --remove -- %s' % path))
+ sys.exit(os.system('git-update-index --remove -- %s' % path))
+ # file deleted in one and changed in the other
+ else:
+ # Do something here - we must at least merge the entry in the cache,
+ # instead of leaving it in U(nmerged) state. In fact, stg resolved
+ # does not handle that.
+
+ # Do the same thing cogito does - remove the file in any case.
+ os.system('git-update-index --remove -- %s' % path)
+
+ #if file1_hash:
+ ## file deleted upstream and changed in the patch. The patch is
+ ## probably going to move the changes elsewhere.
+
+ #os.system('git-update-index --remove -- %s' % path)
+ #else:
+ ## file deleted in the patch and changed upstream. We could re-delete
+ ## it, but for now leave it there - and let the user check if he
+ ## still wants to remove the file.
+
+ ## reset the cache to the first branch
+ #os.system('git-update-index --cacheinfo %s %s %s'
+ #% (file1_mode, file1_hash, path))
+ __conflict()
+
# file does not exist in origin
else:
# file added in both
if file1_hash and file2_hash:
# files are the same
if file1_hash == file2_hash:
- if os.system('git-update-cache --add --cacheinfo %s %s %s'
+ if os.system('git-update-index --add --cacheinfo %s %s %s'
% (file1_mode, file1_hash, path)) != 0:
- print >> sys.stderr, 'Error: git-update-cache failed'
+ print >> sys.stderr, 'Error: git-update-index failed'
__conflict()
- if os.system('git-checkout-cache -u -f -- %s' % path):
- print >> sys.stderr, 'Error: git-checkout-cache failed'
+ if os.system('git-checkout-index -u -f -- %s' % path):
+ print >> sys.stderr, 'Error: git-checkout-index failed'
__conflict()
if file1_mode != file2_mode:
print >> sys.stderr, \
else:
mode = file2_mode
obj = file2_hash
- if os.system('git-update-cache --add --cacheinfo %s %s %s'
+ if os.system('git-update-index --add --cacheinfo %s %s %s'
% (mode, obj, path)) != 0:
- print >> sys.stderr, 'Error: git-update-cache failed'
+ print >> sys.stderr, 'Error: git-update-index failed'
__conflict()
__remove_files()
- sys.exit(os.system('git-checkout-cache -u -f -- %s' % path))
+ sys.exit(os.system('git-checkout-index -u -f -- %s' % path))
-# Un-handled case
-print >> sys.stderr, 'Error: Un-handled merge conflict'
+# Unhandled case
+print >> sys.stderr, 'Error: Unhandled merge conflict'
print >> sys.stderr, 'gitmergeonefile.py "%s" "%s" "%s" "%s" "%s" "%s" "%s"' \
% tuple(sys.argv[1:8])
__conflict()