Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
git
提交
c158cae1
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,发现更多精彩内容 >>
提交
c158cae1
编写于
7月 15, 2008
作者:
J
Junio C Hamano
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'ag/rewrite_one'
* ag/rewrite_one: Fix quadratic performance in rewrite_one.
上级
223bb845
fce87ae5
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
24 addition
and
6 deletion
+24
-6
revision.c
revision.c
+24
-6
未找到文件。
revision.c
浏览文件 @
c158cae1
...
...
@@ -413,10 +413,26 @@ static void try_to_simplify_commit(struct rev_info *revs, struct commit *commit)
commit
->
object
.
flags
|=
TREESAME
;
}
static
int
add_parents_to_list
(
struct
rev_info
*
revs
,
struct
commit
*
commit
,
struct
commit_list
**
list
)
static
void
insert_by_date_cached
(
struct
commit
*
p
,
struct
commit_list
**
head
,
struct
commit_list
*
cached_base
,
struct
commit_list
**
cache
)
{
struct
commit_list
*
new_entry
;
if
(
cached_base
&&
p
->
date
<
cached_base
->
item
->
date
)
new_entry
=
insert_by_date
(
p
,
&
cached_base
->
next
);
else
new_entry
=
insert_by_date
(
p
,
head
);
if
(
cache
&&
(
!*
cache
||
p
->
date
<
(
*
cache
)
->
item
->
date
))
*
cache
=
new_entry
;
}
static
int
add_parents_to_list
(
struct
rev_info
*
revs
,
struct
commit
*
commit
,
struct
commit_list
**
list
,
struct
commit_list
**
cache_ptr
)
{
struct
commit_list
*
parent
=
commit
->
parents
;
unsigned
left_flag
;
struct
commit_list
*
cached_base
=
cache_ptr
?
*
cache_ptr
:
NULL
;
if
(
commit
->
object
.
flags
&
ADDED
)
return
0
;
...
...
@@ -446,7 +462,7 @@ static int add_parents_to_list(struct rev_info *revs, struct commit *commit, str
if
(
p
->
object
.
flags
&
SEEN
)
continue
;
p
->
object
.
flags
|=
SEEN
;
insert_by_date
(
p
,
list
);
insert_by_date
_cached
(
p
,
list
,
cached_base
,
cache_ptr
);
}
return
0
;
}
...
...
@@ -471,7 +487,7 @@ static int add_parents_to_list(struct rev_info *revs, struct commit *commit, str
p
->
object
.
flags
|=
left_flag
;
if
(
!
(
p
->
object
.
flags
&
SEEN
))
{
p
->
object
.
flags
|=
SEEN
;
insert_by_date
(
p
,
list
);
insert_by_date
_cached
(
p
,
list
,
cached_base
,
cache_ptr
);
}
if
(
revs
->
first_parent_only
)
break
;
...
...
@@ -612,7 +628,7 @@ static int limit_list(struct rev_info *revs)
if
(
revs
->
max_age
!=
-
1
&&
(
commit
->
date
<
revs
->
max_age
))
obj
->
flags
|=
UNINTERESTING
;
if
(
add_parents_to_list
(
revs
,
commit
,
&
list
)
<
0
)
if
(
add_parents_to_list
(
revs
,
commit
,
&
list
,
NULL
)
<
0
)
return
-
1
;
if
(
obj
->
flags
&
UNINTERESTING
)
{
mark_parents_uninteresting
(
commit
);
...
...
@@ -1415,10 +1431,12 @@ enum rewrite_result {
static
enum
rewrite_result
rewrite_one
(
struct
rev_info
*
revs
,
struct
commit
**
pp
)
{
struct
commit_list
*
cache
=
NULL
;
for
(;;)
{
struct
commit
*
p
=
*
pp
;
if
(
!
revs
->
limited
)
if
(
add_parents_to_list
(
revs
,
p
,
&
revs
->
commits
)
<
0
)
if
(
add_parents_to_list
(
revs
,
p
,
&
revs
->
commits
,
&
cache
)
<
0
)
return
rewrite_one_error
;
if
(
p
->
parents
&&
p
->
parents
->
next
)
return
rewrite_one_ok
;
...
...
@@ -1542,7 +1560,7 @@ static struct commit *get_revision_1(struct rev_info *revs)
if
(
revs
->
max_age
!=
-
1
&&
(
commit
->
date
<
revs
->
max_age
))
continue
;
if
(
add_parents_to_list
(
revs
,
commit
,
&
revs
->
commits
)
<
0
)
if
(
add_parents_to_list
(
revs
,
commit
,
&
revs
->
commits
,
NULL
)
<
0
)
return
NULL
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录