Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
git2
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
git2
Commits
0caa4655
Commit
0caa4655
authored
Sep 09, 2020
by
Sven Strickroth
Committed by
Edward Thomson
Oct 25, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add git_tag_name_is_valid
Signed-off-by: Sven Strickroth <email@cs-ware.de>
parent
fe11160c
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
54 additions
and
0 deletions
+54
-0
include/git2/tag.h
+12
-0
src/tag.c
+25
-0
tests/refs/tags/name.c
+17
-0
No files found.
include/git2/tag.h
View file @
0caa4655
...
...
@@ -365,6 +365,18 @@ GIT_EXTERN(int) git_tag_peel(
*/
GIT_EXTERN
(
int
)
git_tag_dup
(
git_tag
**
out
,
git_tag
*
source
);
/**
* Determine whether a tag name is valid, meaning that (when prefixed
* with `refs/tags/`) that it is a valid reference name, and that any
* additional tag name restrictions are imposed (eg, it cannot start
* with a `-`).
*
* @param valid output pointer to set with validity of given tag name
* @param name a tag name to test
* @return 0 on success or an error code
*/
GIT_EXTERN
(
int
)
git_tag_name_is_valid
(
int
*
valid
,
const
char
*
name
);
/** @} */
GIT_END_DECL
#endif
src/tag.c
View file @
0caa4655
...
...
@@ -522,6 +522,31 @@ int git_tag_peel(git_object **tag_target, const git_tag *tag)
return
git_object_peel
(
tag_target
,
(
const
git_object
*
)
tag
,
GIT_OBJECT_ANY
);
}
int
git_tag_name_is_valid
(
int
*
valid
,
const
char
*
name
)
{
git_buf
ref_name
=
GIT_BUF_INIT
;
int
error
=
0
;
GIT_ASSERT
(
valid
);
/*
* Discourage tag name starting with dash,
* https://github.com/git/git/commit/4f0accd638b8d2
*/
if
(
!
name
||
name
[
0
]
==
'-'
)
goto
done
;
if
((
error
=
git_buf_puts
(
&
ref_name
,
GIT_REFS_TAGS_DIR
))
<
0
||
(
error
=
git_buf_puts
(
&
ref_name
,
name
))
<
0
)
goto
done
;
error
=
git_reference_name_is_valid
(
valid
,
ref_name
.
ptr
);
done:
git_buf_dispose
(
&
ref_name
);
return
error
;
}
/* Deprecated Functions */
#ifndef GIT_DEPRECATE_HARD
...
...
tests/refs/tags/name.c
0 → 100644
View file @
0caa4655
#include "clar_libgit2.h"
static
int
name_is_valid
(
const
char
*
name
)
{
int
valid
;
cl_git_pass
(
git_tag_name_is_valid
(
&
valid
,
name
));
return
valid
;
}
void
test_refs_tags_is_name_valid
(
void
)
{
cl_assert_equal_i
(
true
,
name_is_valid
(
"sometag"
));
cl_assert_equal_i
(
true
,
name_is_valid
(
"test/sometag"
));
cl_assert_equal_i
(
false
,
name_is_valid
(
""
));
cl_assert_equal_i
(
false
,
name_is_valid
(
"-dash"
));
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment