@@ -2710,6 +2710,29 @@ static VALUE rb_git_repo_cherrypick_commit(int argc, VALUE *argv, VALUE self)
2710
2710
return rugged_index_new (rb_cRuggedIndex , self , index );
2711
2711
}
2712
2712
2713
+ /*
2714
+ * call-seq: repo.diff_from_buffer(buffer) -> Rugged::Diff object
2715
+ *
2716
+ * Where +buffer+ is a +String+.
2717
+ * Returns A Rugged::Diff object
2718
+ */
2719
+ static VALUE rb_git_diff_from_buffer (VALUE self , VALUE rb_buffer )
2720
+ {
2721
+ git_diff * diff = NULL ;
2722
+ const char * buffer ;
2723
+ size_t len ;
2724
+ int error ;
2725
+
2726
+ Check_Type (rb_buffer , T_STRING );
2727
+ buffer = RSTRING_PTR (rb_buffer );
2728
+ len = RSTRING_LEN (rb_buffer );
2729
+
2730
+ error = git_diff_from_buffer (& diff , buffer , len );
2731
+ rugged_exception_check (error );
2732
+
2733
+ return rugged_diff_new (rb_cRuggedDiff , self , diff );
2734
+ }
2735
+
2713
2736
void Init_rugged_repo (void )
2714
2737
{
2715
2738
id_call = rb_intern ("call" );
@@ -2768,6 +2791,8 @@ void Init_rugged_repo(void)
2768
2791
rb_define_method (rb_cRuggedRepo , "apply" , rb_git_repo_apply , -1 );
2769
2792
2770
2793
rb_define_method (rb_cRuggedRepo , "revert_commit" , rb_git_repo_revert_commit , -1 );
2794
+
2795
+ rb_define_method (rb_cRuggedRepo , "diff_from_buffer" , rb_git_diff_from_buffer , 1 );
2771
2796
2772
2797
rb_define_method (rb_cRuggedRepo , "path_ignored?" , rb_git_repo_is_path_ignored , 1 );
2773
2798
0 commit comments