Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
git
提交
bd46c9a9
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,发现更多精彩内容 >>
提交
bd46c9a9
编写于
11月 22, 2007
作者:
J
Junio C Hamano
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
builtin-tag: accept and process multiple -m just like git-commit
Signed-off-by:
N
Junio C Hamano
<
gitster@pobox.com
>
上级
39686585
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
32 addition
and
9 deletion
+32
-9
Documentation/git-tag.txt
Documentation/git-tag.txt
+3
-1
builtin-tag.c
builtin-tag.c
+29
-8
未找到文件。
Documentation/git-tag.txt
浏览文件 @
bd46c9a9
...
...
@@ -65,7 +65,9 @@ OPTIONS
Typing "git tag" without arguments, also lists all tags.
-m <msg>::
Use the given tag message (instead of prompting)
Use the given tag message (instead of prompting).
If multiple `-m` options are given, there values are
concatenated as separate paragraphs.
-F <file>::
Take the tag message from the given file. Use '-' to
...
...
builtin-tag.c
浏览文件 @
bd46c9a9
...
...
@@ -282,7 +282,7 @@ static void write_tag_body(int fd, const unsigned char *sha1)
static
void
create_tag
(
const
unsigned
char
*
object
,
const
char
*
tag
,
struct
strbuf
*
buf
,
int
message
,
int
sign
,
unsigned
char
*
prev
,
unsigned
char
*
result
)
unsigned
char
*
prev
,
unsigned
char
*
result
)
{
enum
object_type
type
;
char
header_buf
[
1024
];
...
...
@@ -341,6 +341,24 @@ static void create_tag(const unsigned char *object, const char *tag,
die
(
"unable to write tag file"
);
}
struct
msg_arg
{
int
given
;
struct
strbuf
buf
;
};
static
int
parse_msg_arg
(
const
struct
option
*
opt
,
const
char
*
arg
,
int
unset
)
{
struct
msg_arg
*
msg
=
opt
->
value
;
if
(
!
arg
)
return
-
1
;
if
(
msg
->
buf
.
len
)
strbuf_addstr
(
&
(
msg
->
buf
),
"
\n\n
"
);
strbuf_addstr
(
&
(
msg
->
buf
),
arg
);
msg
->
given
=
1
;
return
0
;
}
int
cmd_tag
(
int
argc
,
const
char
**
argv
,
const
char
*
prefix
)
{
struct
strbuf
buf
;
...
...
@@ -351,8 +369,9 @@ int cmd_tag(int argc, const char **argv, const char *prefix)
int
annotate
=
0
,
sign
=
0
,
force
=
0
,
lines
=
0
,
delete
=
0
,
verify
=
0
;
char
*
list
=
NULL
,
*
msg
=
NULL
,
*
msg
file
=
NULL
,
*
keyid
=
NULL
;
char
*
list
=
NULL
,
*
msgfile
=
NULL
,
*
keyid
=
NULL
;
const
char
*
no_pattern
=
"NO_PATTERN"
;
struct
msg_arg
msg
=
{
0
,
STRBUF_INIT
};
struct
option
options
[]
=
{
{
OPTION_STRING
,
'l'
,
NULL
,
&
list
,
"pattern"
,
"list tag names"
,
PARSE_OPT_OPTARG
,
NULL
,
(
intptr_t
)
no_pattern
},
...
...
@@ -365,7 +384,8 @@ int cmd_tag(int argc, const char **argv, const char *prefix)
OPT_GROUP
(
"Tag creation options"
),
OPT_BOOLEAN
(
'a'
,
NULL
,
&
annotate
,
"annotated tag, needs a message"
),
OPT_STRING
(
'm'
,
NULL
,
&
msg
,
"msg"
,
"message for the tag"
),
OPT_CALLBACK
(
'm'
,
NULL
,
&
msg
,
"msg"
,
"message for the tag"
,
parse_msg_arg
),
OPT_STRING
(
'F'
,
NULL
,
&
msgfile
,
"file"
,
"message in a file"
),
OPT_BOOLEAN
(
's'
,
NULL
,
&
sign
,
"annotated and GPG-signed tag"
),
OPT_STRING
(
'u'
,
NULL
,
&
keyid
,
"key-id"
,
...
...
@@ -386,12 +406,12 @@ int cmd_tag(int argc, const char **argv, const char *prefix)
return
for_each_tag_name
(
argv
,
verify_tag
);
strbuf_init
(
&
buf
,
0
);
if
(
msg
||
msgfile
)
{
if
(
msg
&&
msgfile
)
if
(
msg
.
given
||
msgfile
)
{
if
(
msg
.
given
&&
msgfile
)
die
(
"only one -F or -m option is allowed."
);
annotate
=
1
;
if
(
msg
)
strbuf_add
str
(
&
buf
,
msg
);
if
(
msg
.
given
)
strbuf_add
buf
(
&
buf
,
&
(
msg
.
buf
)
);
else
{
if
(
!
strcmp
(
msgfile
,
"-"
))
{
if
(
strbuf_read
(
&
buf
,
0
,
1024
)
<
0
)
...
...
@@ -429,7 +449,8 @@ int cmd_tag(int argc, const char **argv, const char *prefix)
die
(
"tag '%s' already exists"
,
tag
);
if
(
annotate
)
create_tag
(
object
,
tag
,
&
buf
,
msg
||
msgfile
,
sign
,
prev
,
object
);
create_tag
(
object
,
tag
,
&
buf
,
msg
.
given
||
msgfile
,
sign
,
prev
,
object
);
lock
=
lock_any_ref_for_update
(
ref
,
prev
,
0
);
if
(
!
lock
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录