1 #ifndef SEAF_BRANCH_MGR_H 2 #define SEAF_BRANCH_MGR_H 3 4 #include "commit-mgr.h" 5 #define NO_BRANCH "-" 6 7 typedef struct _SeafBranch SeafBranch; 8 9 struct _SeafBranch { 10 int ref; 11 char *name; 12 char repo_id[37]; 13 char commit_id[41]; 14 }; 15 16 SeafBranch *seaf_branch_new (const char *name, 17 const char *repo_id, 18 const char *commit_id); 19 void seaf_branch_free (SeafBranch *branch); 20 void seaf_branch_set_commit (SeafBranch *branch, const char *commit_id); 21 22 void seaf_branch_ref (SeafBranch *branch); 23 void seaf_branch_unref (SeafBranch *branch); 24 25 26 typedef struct _SeafBranchManager SeafBranchManager; 27 typedef struct _SeafBranchManagerPriv SeafBranchManagerPriv; 28 29 struct _SeafileSession; 30 struct _SeafBranchManager { 31 struct _SeafileSession *seaf; 32 33 SeafBranchManagerPriv *priv; 34 }; 35 36 SeafBranchManager *seaf_branch_manager_new (struct _SeafileSession *seaf); 37 int seaf_branch_manager_init (SeafBranchManager *mgr); 38 39 int 40 seaf_branch_manager_add_branch (SeafBranchManager *mgr, SeafBranch *branch); 41 42 int 43 seaf_branch_manager_del_branch (SeafBranchManager *mgr, 44 const char *repo_id, 45 const char *name); 46 47 void 48 seaf_branch_list_free (GList *blist); 49 50 int 51 seaf_branch_manager_update_branch (SeafBranchManager *mgr, 52 SeafBranch *branch); 53 54 #ifdef SEAFILE_SERVER 55 /** 56 * Atomically test whether the current head commit id on @branch 57 * is the same as @old_commit_id and update branch in db. 58 */ 59 int 60 seaf_branch_manager_test_and_update_branch (SeafBranchManager *mgr, 61 SeafBranch *branch, 62 const char *old_commit_id); 63 #endif 64 65 SeafBranch * 66 seaf_branch_manager_get_branch (SeafBranchManager *mgr, 67 const char *repo_id, 68 const char *name); 69 70 71 gboolean 72 seaf_branch_manager_branch_exists (SeafBranchManager *mgr, 73 const char *repo_id, 74 const char *name); 75 76 GList * 77 seaf_branch_manager_get_branch_list (SeafBranchManager *mgr, 78 const char *repo_id); 79 80 gint64 81 seaf_branch_manager_calculate_branch_size (SeafBranchManager *mgr, 82 const char *repo_id, 83 const char *commit_id); 84 #endif /* SEAF_BRANCH_MGR_H */ 85