Skip to content

Commit 75bbdc8

Browse files
committed
add bindings for git_branch_name_is_valid
1 parent 9103941 commit 75bbdc8

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

libgit2-sys/lib.rs

+2
Original file line numberDiff line numberDiff line change
@@ -2740,6 +2740,7 @@ extern "C" {
27402740
force: c_int,
27412741
) -> c_int;
27422742
pub fn git_branch_name(out: *mut *const c_char, branch: *const git_reference) -> c_int;
2743+
pub fn git_branch_name_is_valid(valid: *mut c_int, name: *const c_char) -> c_int;
27432744
pub fn git_branch_remote_name(
27442745
out: *mut git_buf,
27452746
repo: *mut git_repository,
@@ -3072,6 +3073,7 @@ extern "C" {
30723073
) -> c_int;
30733074
pub fn git_tag_message(tag: *const git_tag) -> *const c_char;
30743075
pub fn git_tag_name(tag: *const git_tag) -> *const c_char;
3076+
pub fn git_tag_name_is_valid(valid: *mut c_int, name: *const c_char) -> c_int;
30753077
pub fn git_tag_peel(tag_target_out: *mut *mut git_object, tag: *const git_tag) -> c_int;
30763078
pub fn git_tag_tagger(tag: *const git_tag) -> *const git_signature;
30773079
pub fn git_tag_target(target_out: *mut *mut git_object, tag: *const git_tag) -> c_int;

src/branch.rs

+19
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,16 @@ impl<'repo> Branch<'repo> {
2828
Branch { inner: reference }
2929
}
3030

31+
/// Ensure the branch name is well-formed.
32+
pub fn name_is_valid(name: &str) -> Result<bool, Error> {
33+
let name = CString::new(name).unwrap();
34+
let mut valid: libc::c_int = 0;
35+
unsafe {
36+
try_call!(raw::git_branch_name_is_valid(&mut valid, name.as_ptr()));
37+
}
38+
Ok(valid == 1)
39+
}
40+
3141
/// Gain access to the reference that is this branch
3242
pub fn get(&self) -> &Reference<'repo> {
3343
&self.inner
@@ -151,6 +161,7 @@ impl<'repo> Drop for Branches<'repo> {
151161

152162
#[cfg(test)]
153163
mod tests {
164+
use crate::Branch;
154165
use crate::BranchType;
155166

156167
#[test]
@@ -175,4 +186,12 @@ mod tests {
175186

176187
b1.delete().unwrap();
177188
}
189+
190+
#[test]
191+
fn name_is_valid() {
192+
assert!(Branch::name_is_valid("foo").unwrap());
193+
assert!(!Branch::name_is_valid("").unwrap());
194+
assert!(!Branch::name_is_valid("with spaces").unwrap());
195+
assert!(!Branch::name_is_valid("~tilde").unwrap());
196+
}
178197
}

0 commit comments

Comments
 (0)