Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
git
提交
23242a6f
G
git
项目概览
李少辉-开发者
/
git
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
git
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
23242a6f
编写于
9月 11, 2012
作者:
J
Junio C Hamano
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'jc/maint-mergetool-style-fix' into maint-1.7.11
* jc/maint-mergetool-style-fix: mergetool: style fixes
上级
ee7a83f6
f8750a0e
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
308 addition
and
273 deletion
+308
-273
git-mergetool.sh
git-mergetool.sh
+308
-273
未找到文件。
git-mergetool.sh
浏览文件 @
23242a6f
...
...
@@ -38,7 +38,8 @@ base_present () {
}
cleanup_temp_files
()
{
if
test
"
$1
"
=
--save-backup
;
then
if
test
"
$1
"
=
--save-backup
then
rm
-rf
--
"
$MERGED
.orig"
test
-e
"
$BACKUP
"
&&
mv
--
"
$BACKUP
"
"
$MERGED
.orig"
rm
-f
--
"
$LOCAL
"
"
$REMOTE
"
"
$BASE
"
...
...
@@ -53,24 +54,26 @@ describe_file () {
file
=
"
$3
"
printf
" {%s}: "
"
$branch
"
if
test
-z
"
$mode
"
;
then
if
test
-z
"
$mode
"
then
echo
"deleted"
elif
is_symlink
"
$mode
"
;
then
elif
is_symlink
"
$mode
"
then
echo
"a symbolic link -> '
$(
cat
"
$file
"
)
'"
elif
is_submodule
"
$mode
"
;
then
elif
is_submodule
"
$mode
"
then
echo
"submodule commit
$file
"
else
if
base_present
;
then
elif
base_present
then
echo
"modified file"
else
echo
"created file"
fi
fi
}
resolve_symlink_merge
()
{
while
true
;
do
while
true
do
printf
"Use (l)ocal or (r)emote, or (a)bort? "
read
ans
||
return
1
case
"
$ans
"
in
...
...
@@ -94,8 +97,10 @@ resolve_symlink_merge () {
}
resolve_deleted_merge
()
{
while
true
;
do
if
base_present
;
then
while
true
do
if
base_present
then
printf
"Use (m)odified or (d)eleted file, or (a)bort? "
else
printf
"Use (c)reated or (d)eleted file, or (a)bort? "
...
...
@@ -120,21 +125,26 @@ resolve_deleted_merge () {
}
resolve_submodule_merge
()
{
while
true
;
do
while
true
do
printf
"Use (l)ocal or (r)emote, or (a)bort? "
read
ans
||
return
1
case
"
$ans
"
in
[
lL]
*
)
if
!
local_present
;
then
if
test
-n
"
$(
git ls-tree HEAD
--
"
$MERGED
"
)
"
;
then
if
!
local_present
then
if
test
-n
"
$(
git ls-tree HEAD
--
"
$MERGED
"
)
"
then
# Local isn't present, but it's a subdirectory
git ls-tree
--full-name
-r
HEAD
--
"
$MERGED
"
| git update-index
--index-info
||
exit
$?
git ls-tree
--full-name
-r
HEAD
--
"
$MERGED
"
|
git update-index
--index-info
||
exit
$?
else
test
-e
"
$MERGED
"
&&
mv
--
"
$MERGED
"
"
$BACKUP
"
git update-index
--force-remove
"
$MERGED
"
cleanup_temp_files
--save-backup
fi
elif
is_submodule
"
$local_mode
"
;
then
elif
is_submodule
"
$local_mode
"
then
stage_submodule
"
$MERGED
"
"
$local_sha1
"
else
git checkout-index
-f
--stage
=
2
--
"
$MERGED
"
...
...
@@ -143,16 +153,22 @@ resolve_submodule_merge () {
return
0
;;
[
rR]
*
)
if
!
remote_present
;
then
if
test
-n
"
$(
git ls-tree MERGE_HEAD
--
"
$MERGED
"
)
"
;
then
if
!
remote_present
then
if
test
-n
"
$(
git ls-tree MERGE_HEAD
--
"
$MERGED
"
)
"
then
# Remote isn't present, but it's a subdirectory
git ls-tree
--full-name
-r
MERGE_HEAD
--
"
$MERGED
"
| git update-index
--index-info
||
exit
$?
git ls-tree
--full-name
-r
MERGE_HEAD
--
"
$MERGED
"
|
git update-index
--index-info
||
exit
$?
else
test
-e
"
$MERGED
"
&&
mv
--
"
$MERGED
"
"
$BACKUP
"
git update-index
--force-remove
"
$MERGED
"
fi
elif
is_submodule
"
$remote_mode
"
;
then
!
is_submodule
"
$local_mode
"
&&
test
-e
"
$MERGED
"
&&
mv
--
"
$MERGED
"
"
$BACKUP
"
elif
is_submodule
"
$remote_mode
"
then
!
is_submodule
"
$local_mode
"
&&
test
-e
"
$MERGED
"
&&
mv
--
"
$MERGED
"
"
$BACKUP
"
stage_submodule
"
$MERGED
"
"
$remote_sha1
"
else
test
-e
"
$MERGED
"
&&
mv
--
"
$MERGED
"
"
$BACKUP
"
...
...
@@ -172,11 +188,15 @@ resolve_submodule_merge () {
stage_submodule
()
{
path
=
"
$1
"
submodule_sha1
=
"
$2
"
mkdir
-p
"
$path
"
||
die
"fatal: unable to create directory for module at
$path
"
mkdir
-p
"
$path
"
||
die
"fatal: unable to create directory for module at
$path
"
# Find $path relative to work tree
work_tree_root
=
$(
cd_to_toplevel
&&
pwd
)
work_rel_path
=
$(
cd
"
$path
"
&&
GIT_WORK_TREE
=
"
${
work_tree_root
}
"
git rev-parse
--show-prefix
)
test
-n
"
$work_rel_path
"
||
die
"fatal: unable to get path of module
$path
relative to work tree"
work_rel_path
=
$(
cd
"
$path
"
&&
GIT_WORK_TREE
=
"
${
work_tree_root
}
"
git rev-parse
--show-prefix
)
test
-n
"
$work_rel_path
"
||
die
"fatal: unable to get path of module
$path
relative to work tree"
git update-index
--add
--replace
--cacheinfo
160000
"
$submodule_sha1
"
"
${
work_rel_path
%/
}
"
||
die
}
...
...
@@ -185,7 +205,8 @@ checkout_staged_file () {
"
$(
git checkout-index
--temp
--stage
=
"
$1
"
"
$2
"
2>/dev/null
)
"
\
:
'\([^ ]*\) '
)
if
test
$?
-eq
0
-a
-n
"
$tmpfile
"
;
then
if
test
$?
-eq
0
-a
-n
"
$tmpfile
"
then
mv
--
"
$(
git rev-parse
--show-cdup
)
$tmpfile
"
"
$3
"
else
>
"
$3
"
...
...
@@ -196,8 +217,10 @@ merge_file () {
MERGED
=
"
$1
"
f
=
$(
git ls-files
-u
--
"
$MERGED
"
)
if
test
-z
"
$f
"
;
then
if
test
!
-f
"
$MERGED
"
;
then
if
test
-z
"
$f
"
then
if
test
!
-f
"
$MERGED
"
then
echo
"
$MERGED
: file not found"
else
echo
"
$MERGED
: file does not need merging"
...
...
@@ -215,7 +238,8 @@ merge_file () {
local_mode
=
$(
git ls-files
-u
--
"
$MERGED
"
|
awk
'{if ($3==2) print $1;}'
)
remote_mode
=
$(
git ls-files
-u
--
"
$MERGED
"
|
awk
'{if ($3==3) print $1;}'
)
if
is_submodule
"
$local_mode
"
||
is_submodule
"
$remote_mode
"
;
then
if
is_submodule
"
$local_mode
"
||
is_submodule
"
$remote_mode
"
then
echo
"Submodule merge conflict for '
$MERGED
':"
local_sha1
=
$(
git ls-files
-u
--
"
$MERGED
"
|
awk
'{if ($3==2) print $2;}'
)
remote_sha1
=
$(
git ls-files
-u
--
"
$MERGED
"
|
awk
'{if ($3==3) print $2;}'
)
...
...
@@ -232,7 +256,8 @@ merge_file () {
checkout_staged_file 2
"
$MERGED
"
"
$LOCAL
"
checkout_staged_file 3
"
$MERGED
"
"
$REMOTE
"
if
test
-z
"
$local_mode
"
-o
-z
"
$remote_mode
"
;
then
if
test
-z
"
$local_mode
"
-o
-z
"
$remote_mode
"
then
echo
"Deleted merge conflict for '
$MERGED
':"
describe_file
"
$local_mode
"
"local"
"
$LOCAL
"
describe_file
"
$remote_mode
"
"remote"
"
$REMOTE
"
...
...
@@ -240,7 +265,8 @@ merge_file () {
return
fi
if
is_symlink
"
$local_mode
"
||
is_symlink
"
$remote_mode
"
;
then
if
is_symlink
"
$local_mode
"
||
is_symlink
"
$remote_mode
"
then
echo
"Symbolic link merge conflict for '
$MERGED
':"
describe_file
"
$local_mode
"
"local"
"
$LOCAL
"
describe_file
"
$remote_mode
"
"remote"
"
$REMOTE
"
...
...
@@ -251,29 +277,34 @@ merge_file () {
echo
"Normal merge conflict for '
$MERGED
':"
describe_file
"
$local_mode
"
"local"
"
$LOCAL
"
describe_file
"
$remote_mode
"
"remote"
"
$REMOTE
"
if
"
$prompt
"
=
true
;
then
if
"
$prompt
"
=
true
then
printf
"Hit return to start merge resolution tool (%s): "
"
$merge_tool
"
read
ans
||
return
1
fi
if
base_present
;
then
if
base_present
then
present
=
true
else
present
=
false
fi
if
!
run_merge_tool
"
$merge_tool
"
"
$present
"
;
then
if
!
run_merge_tool
"
$merge_tool
"
"
$present
"
then
echo
"merge of
$MERGED
failed"
1>&2
mv
--
"
$BACKUP
"
"
$MERGED
"
if
test
"
$merge_keep_temporaries
"
=
"false"
;
then
if
test
"
$merge_keep_temporaries
"
=
"false"
then
cleanup_temp_files
fi
return
1
fi
if
test
"
$merge_keep_backup
"
=
"true"
;
then
if
test
"
$merge_keep_backup
"
=
"true"
then
mv
--
"
$BACKUP
"
"
$MERGED
.orig"
else
rm
--
"
$BACKUP
"
...
...
@@ -361,16 +392,15 @@ do
shift
done
prompt_after_failed_merge
()
{
while
true
;
do
prompt_after_failed_merge
()
{
while
true
do
printf
"Continue merging other unresolved paths (y/n) ? "
read
ans
||
return
1
case
"
$ans
"
in
[
yY]
*
)
return
0
;;
[
nN]
*
)
return
1
;;
...
...
@@ -378,7 +408,8 @@ prompt_after_failed_merge() {
done
}
if
test
-z
"
$merge_tool
"
;
then
if
test
-z
"
$merge_tool
"
then
merge_tool
=
$(
get_merge_tool
"
$merge_tool
"
)
||
exit
fi
merge_keep_backup
=
"
$(
git config
--bool
mergetool.keepBackup
||
echo true
)
"
...
...
@@ -388,7 +419,8 @@ last_status=0
rollup_status
=
0
files
=
if
test
$#
-eq
0
;
then
if
test
$#
-eq
0
then
cd_to_toplevel
if
test
-e
"
$GIT_DIR
/MERGE_RR"
...
...
@@ -401,7 +433,8 @@ else
files
=
$(
git ls-files
-u
--
"
$@
"
|
sed
-e
's/^[^ ]* //'
|
sort
-u
)
fi
if
test
-z
"
$files
"
;
then
if
test
-z
"
$files
"
then
echo
"No files need merging"
exit
0
fi
...
...
@@ -413,13 +446,15 @@ IFS='
'
for
i
in
$files
do
if
test
$last_status
-ne
0
;
then
if
test
$last_status
-ne
0
then
prompt_after_failed_merge
||
exit
1
fi
printf
"
\n
"
merge_file
"
$i
"
last_status
=
$?
if
test
$last_status
-ne
0
;
then
if
test
$last_status
-ne
0
then
rollup_status
=
1
fi
done
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录