Skip to content

Commit 76897b8

Browse files
authored
Merge pull request #887 from malor/blob-group-writable
Add support for GIT_FILEMODE_BLOB_GROUP_WRITABLE
2 parents 7805b63 + 5ab1d44 commit 76897b8

File tree

4 files changed

+11
-0
lines changed

4 files changed

+11
-0
lines changed

Diff for: libgit2-sys/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -706,6 +706,7 @@ git_enum! {
706706
GIT_FILEMODE_UNREADABLE = 0o000000,
707707
GIT_FILEMODE_TREE = 0o040000,
708708
GIT_FILEMODE_BLOB = 0o100644,
709+
GIT_FILEMODE_BLOB_GROUP_WRITABLE = 0o100664,
709710
GIT_FILEMODE_BLOB_EXECUTABLE = 0o100755,
710711
GIT_FILEMODE_LINK = 0o120000,
711712
GIT_FILEMODE_COMMIT = 0o160000,

Diff for: src/diff.rs

+1
Original file line numberDiff line numberDiff line change
@@ -621,6 +621,7 @@ impl<'a> DiffFile<'a> {
621621
raw::GIT_FILEMODE_UNREADABLE => FileMode::Unreadable,
622622
raw::GIT_FILEMODE_TREE => FileMode::Tree,
623623
raw::GIT_FILEMODE_BLOB => FileMode::Blob,
624+
raw::GIT_FILEMODE_BLOB_GROUP_WRITABLE => FileMode::BlobGroupWritable,
624625
raw::GIT_FILEMODE_BLOB_EXECUTABLE => FileMode::BlobExecutable,
625626
raw::GIT_FILEMODE_LINK => FileMode::Link,
626627
raw::GIT_FILEMODE_COMMIT => FileMode::Commit,

Diff for: src/lib.rs

+6
Original file line numberDiff line numberDiff line change
@@ -1098,6 +1098,8 @@ pub enum FileMode {
10981098
Tree,
10991099
/// Blob
11001100
Blob,
1101+
/// Group writable blob. Obsolete mode kept for compatibility reasons
1102+
BlobGroupWritable,
11011103
/// Blob executable
11021104
BlobExecutable,
11031105
/// Link
@@ -1112,6 +1114,7 @@ impl From<FileMode> for i32 {
11121114
FileMode::Unreadable => raw::GIT_FILEMODE_UNREADABLE as i32,
11131115
FileMode::Tree => raw::GIT_FILEMODE_TREE as i32,
11141116
FileMode::Blob => raw::GIT_FILEMODE_BLOB as i32,
1117+
FileMode::BlobGroupWritable => raw::GIT_FILEMODE_BLOB_GROUP_WRITABLE as i32,
11151118
FileMode::BlobExecutable => raw::GIT_FILEMODE_BLOB_EXECUTABLE as i32,
11161119
FileMode::Link => raw::GIT_FILEMODE_LINK as i32,
11171120
FileMode::Commit => raw::GIT_FILEMODE_COMMIT as i32,
@@ -1125,6 +1128,7 @@ impl From<FileMode> for u32 {
11251128
FileMode::Unreadable => raw::GIT_FILEMODE_UNREADABLE as u32,
11261129
FileMode::Tree => raw::GIT_FILEMODE_TREE as u32,
11271130
FileMode::Blob => raw::GIT_FILEMODE_BLOB as u32,
1131+
FileMode::BlobGroupWritable => raw::GIT_FILEMODE_BLOB_GROUP_WRITABLE as u32,
11281132
FileMode::BlobExecutable => raw::GIT_FILEMODE_BLOB_EXECUTABLE as u32,
11291133
FileMode::Link => raw::GIT_FILEMODE_LINK as u32,
11301134
FileMode::Commit => raw::GIT_FILEMODE_COMMIT as u32,
@@ -1564,8 +1568,10 @@ mod tests {
15641568
#[test]
15651569
fn convert_filemode() {
15661570
assert_eq!(i32::from(FileMode::Blob), 0o100644);
1571+
assert_eq!(i32::from(FileMode::BlobGroupWritable), 0o100664);
15671572
assert_eq!(i32::from(FileMode::BlobExecutable), 0o100755);
15681573
assert_eq!(u32::from(FileMode::Blob), 0o100644);
1574+
assert_eq!(u32::from(FileMode::BlobGroupWritable), 0o100664);
15691575
assert_eq!(u32::from(FileMode::BlobExecutable), 0o100755);
15701576
}
15711577
}

Diff for: systest/build.rs

+3
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ fn main() {
3333
_ => false,
3434
});
3535

36+
// GIT_FILEMODE_BLOB_GROUP_WRITABLE is not a public const in libgit2
37+
cfg.define("GIT_FILEMODE_BLOB_GROUP_WRITABLE", Some("0100664"));
38+
3639
// not entirely sure why this is failing...
3740
cfg.skip_roundtrip(|t| t == "git_clone_options" || t == "git_submodule_update_options");
3841

0 commit comments

Comments
 (0)