Skip to content

Commit 648f188

Browse files
Reuse existing macros for getting and setting the refdb.
1 parent a4cd985 commit 648f188

File tree

3 files changed

+34
-18
lines changed

3 files changed

+34
-18
lines changed

ext/rugged/rugged.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ VALUE rugged_signature_new(const git_signature *sig, const char *encoding_name);
9797

9898
VALUE rugged_repo_new(VALUE klass, git_repository *repo);
9999
VALUE rugged_index_new(VALUE klass, VALUE owner, git_index *index);
100+
VALUE rugged_refdb_new(VALUE klass, VALUE owner, git_refdb *refdb);
100101
VALUE rugged_config_new(VALUE klass, VALUE owner, git_config *cfg);
101102
VALUE rugged_odb_new(VALUE klass, VALUE owner, git_odb *odb);
102103
VALUE rugged_object_new(VALUE owner, git_object *object);

ext/rugged/rugged_refdb.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,13 @@
2727
extern VALUE rb_mRugged;
2828
VALUE rb_cRuggedRefdb;
2929

30+
VALUE rugged_refdb_new(VALUE klass, VALUE owner, git_refdb *refdb)
31+
{
32+
VALUE rb_refdb = Data_Wrap_Struct(klass, NULL, git_refdb_free, refdb);
33+
rugged_set_owner(rb_refdb, owner);
34+
return rb_refdb;
35+
}
36+
3037
/*
3138
* call-seq:
3239
* Refdb.new(repository) -> refdb
@@ -44,7 +51,7 @@ static VALUE rb_git_refdb_new(VALUE klass, VALUE rb_repo) {
4451

4552
rugged_exception_check(git_refdb_new(&refdb, repo));
4653

47-
return Data_Wrap_Struct(klass, NULL, git_refdb_free, refdb);
54+
return rugged_refdb_new(klass, Qnil, refdb);
4855
}
4956

5057
/*
@@ -62,7 +69,7 @@ static VALUE rb_git_refdb_open(VALUE klass, VALUE rb_repo) {
6269

6370
rugged_exception_check(git_refdb_open(&refdb, repo));
6471

65-
return Data_Wrap_Struct(klass, NULL, git_refdb_free, refdb);
72+
return rugged_refdb_new(klass, Qnil, refdb);
6673
}
6774

6875
/*

ext/rugged/rugged_repo.c

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ extern VALUE rb_cRuggedTree;
4040
extern VALUE rb_cRuggedReference;
4141
extern VALUE rb_cRuggedBackend;
4242
extern VALUE rb_cRuggedOdb;
43+
extern VALUE rb_cRuggedRefdb;
4344

4445
extern VALUE rb_cRuggedCredPlaintext;
4546
extern VALUE rb_cRuggedCredSshKey;
@@ -155,6 +156,7 @@ VALUE rugged_repo_new(VALUE klass, git_repository *repo)
155156

156157
rb_iv_set(rb_repo, "@config", Qnil);
157158
rb_iv_set(rb_repo, "@index", Qnil);
159+
rb_iv_set(rb_repo, "@refdb", Qnil);
158160

159161
return rb_repo;
160162
}
@@ -609,6 +611,24 @@ static VALUE rb_git_repo_get_odb(VALUE self)
609611
RB_GIT_REPO_OWNED_GET(rb_cRuggedOdb, odb);
610612
}
611613

614+
/*
615+
* call-seq:
616+
* repo.refdb = refdb
617+
*/
618+
static VALUE rb_git_repo_set_refdb(VALUE self, VALUE rb_data)
619+
{
620+
RB_GIT_REPO_OWNED_SET(rb_cRuggedRefdb, refdb);
621+
}
622+
623+
/*
624+
* call-seq:
625+
* repo.refdb -> refdb
626+
*/
627+
static VALUE rb_git_repo_get_refdb(VALUE self)
628+
{
629+
RB_GIT_REPO_OWNED_GET(rb_cRuggedRefdb, refdb);
630+
}
631+
612632
/*
613633
* call-seq:
614634
* repo.ident = ident
@@ -2483,19 +2503,6 @@ static VALUE rb_git_repo_cherrypick(int argc, VALUE *argv, VALUE self)
24832503
return Qnil;
24842504
}
24852505

2486-
static VALUE rb_git_repository_set_refdb(VALUE self, VALUE rb_refdb)
2487-
{
2488-
git_repository *repo;
2489-
git_refdb *refdb;
2490-
2491-
Data_Get_Struct(self, git_repository, repo);
2492-
Data_Get_Struct(rb_refdb, git_refdb, refdb);
2493-
2494-
git_repository_set_refdb(repo, refdb);
2495-
2496-
return rb_refdb;
2497-
}
2498-
24992506
void Init_rugged_repo(void)
25002507
{
25012508
id_call = rb_intern("call");
@@ -2531,9 +2538,10 @@ void Init_rugged_repo(void)
25312538
rb_define_method(rb_cRuggedRepo, "index=", rb_git_repo_set_index, 1);
25322539
rb_define_method(rb_cRuggedRepo, "config", rb_git_repo_get_config, 0);
25332540
rb_define_method(rb_cRuggedRepo, "config=", rb_git_repo_set_config, 1);
2534-
rb_define_method(rb_cRuggedRepo, "odb", rb_git_repo_get_odb, 0);
2535-
rb_define_method(rb_cRuggedRepo, "odb=", rb_git_repo_set_odb, 1);
2536-
rb_define_method(rb_cRuggedRepo, "refdb=", rb_git_repository_set_refdb, 1);
2541+
rb_define_method(rb_cRuggedRepo, "odb", rb_git_repo_get_odb, 0);
2542+
rb_define_method(rb_cRuggedRepo, "odb=", rb_git_repo_set_odb, 1);
2543+
rb_define_method(rb_cRuggedRepo, "refdb", rb_git_repo_get_refdb, 0);
2544+
rb_define_method(rb_cRuggedRepo, "refdb=", rb_git_repo_set_refdb, 1);
25372545

25382546
rb_define_method(rb_cRuggedRepo, "ident", rb_git_repo_get_ident, 0);
25392547
rb_define_method(rb_cRuggedRepo, "ident=", rb_git_repo_set_ident, 1);

0 commit comments

Comments
 (0)