[libgit2-glib] Added various ggit_revision_walker hide/push API



commit 2bdf647e04d665d92e73906e86ed8ece8f12814d
Author: Jesse van den Kieboom <jessevdk gnome org>
Date:   Tue Jun 24 18:37:05 2014 +0200

    Added various ggit_revision_walker hide/push API

 libgit2-glib/ggit-revision-walker.c |  202 +++++++++++++++++++++++++++++++++++
 libgit2-glib/ggit-revision-walker.h |   26 +++++
 2 files changed, 228 insertions(+), 0 deletions(-)
---
diff --git a/libgit2-glib/ggit-revision-walker.c b/libgit2-glib/ggit-revision-walker.c
index 79bbb6f..3cbd9dd 100644
--- a/libgit2-glib/ggit-revision-walker.c
+++ b/libgit2-glib/ggit-revision-walker.c
@@ -242,6 +242,123 @@ ggit_revision_walker_push (GgitRevisionWalker  *walker,
 }
 
 /**
+ * ggit_revision_walker_push_glob:
+ * @walker: a #GgitRevisionWalker.
+ * @item: the glob to push.
+ * @error: a #GError.
+ *
+ * Push all OIDs pointed to by references that match the given glob pattern
+ * to the revsision walker. A leading 'refs/' is implied if not present, as well
+ * as a trailing '/ \ *' if the glob lacks '?', '\ *' or '['.
+ *
+ **/
+void
+ggit_revision_walker_push_glob (GgitRevisionWalker  *walker,
+                                const gchar         *item,
+                                GError             **error)
+{
+       gint ret;
+
+       g_return_if_fail (GGIT_IS_REVISION_WALKER (walker));
+       g_return_if_fail (item != NULL);
+       g_return_if_fail (error == NULL || *error == NULL);
+
+       ret = git_revwalk_push_glob (_ggit_native_get (walker),
+                                    item);
+
+       if (ret != GIT_OK)
+       {
+               _ggit_error_set (error, ret);
+       }
+}
+
+/**
+ * ggit_revision_walker_push_ref:
+ * @walker: a #GgitRevisionWalker.
+ * @item: the reference to push.
+ * @error: a #GError.
+ *
+ * Push the OID pointed to by the named reference to the revision walker.
+ *
+ **/
+void
+ggit_revision_walker_push_ref (GgitRevisionWalker  *walker,
+                               const gchar         *item,
+                               GError             **error)
+{
+       gint ret;
+
+       g_return_if_fail (GGIT_IS_REVISION_WALKER (walker));
+       g_return_if_fail (item != NULL);
+       g_return_if_fail (error == NULL || *error == NULL);
+
+       ret = git_revwalk_push_ref (_ggit_native_get (walker),
+                                   item);
+
+       if (ret != GIT_OK)
+       {
+               _ggit_error_set (error, ret);
+       }
+}
+
+/**
+ * ggit_revision_walker_push_range:
+ * @walker: a #GgitRevisionWalker.
+ * @range: the range to push.
+ * @error: a #GError.
+ *
+ * Push and hide the respective endpoints of the given range. The range
+ * should be of the form: <commit>..<commit>, where each <commit> is in the
+ * form accepted by revparse. The left-hand commit will be hidden and the
+ * right-hand commit pushed.
+ *
+ **/
+void
+ggit_revision_walker_push_range (GgitRevisionWalker  *walker,
+                                 const gchar         *range,
+                                 GError             **error)
+{
+       gint ret;
+
+       g_return_if_fail (GGIT_IS_REVISION_WALKER (walker));
+       g_return_if_fail (range != NULL);
+       g_return_if_fail (error == NULL || *error == NULL);
+
+       ret = git_revwalk_push_range (_ggit_native_get (walker),
+                                     range);
+
+       if (ret != GIT_OK)
+       {
+               _ggit_error_set (error, ret);
+       }
+}
+
+/**
+ * ggit_revision_walker_push_head:
+ * @walker: a #GgitRevisionWalker.
+ * @error: a #GError.
+ *
+ * Push the OID of the current HEAD to the revision walker.
+ *
+ **/
+void
+ggit_revision_walker_push_head (GgitRevisionWalker  *walker,
+                                GError             **error)
+{
+       gint ret;
+
+       g_return_if_fail (GGIT_IS_REVISION_WALKER (walker));
+       g_return_if_fail (error == NULL || *error == NULL);
+
+       ret = git_revwalk_push_head (_ggit_native_get (walker));
+
+       if (ret != GIT_OK)
+       {
+               _ggit_error_set (error, ret);
+       }
+}
+
+/**
  * ggit_revision_walker_hide:
  * @walker: a #GgitRevisionWalker.
  * @oid: a #GgitOId.
@@ -276,6 +393,91 @@ ggit_revision_walker_hide (GgitRevisionWalker  *walker,
 }
 
 /**
+ * ggit_revision_walker_hide_glob:
+ * @walker: a #GgitRevisionWalker.
+ * @item: the glob to hide.
+ * @error: a #GError.
+ *
+ * Hide all OIDs pointed to by references that match the given glob pattern
+ * to the revsision walker. A leading 'refs/' is implied if not present, as well
+ * as a trailing '/ \ *' if the glob lacks '?', '\ *' or '['.
+ *
+ **/
+void
+ggit_revision_walker_hide_glob (GgitRevisionWalker  *walker,
+                                const gchar         *item,
+                                GError             **error)
+{
+       gint ret;
+
+       g_return_if_fail (GGIT_IS_REVISION_WALKER (walker));
+       g_return_if_fail (item != NULL);
+       g_return_if_fail (error == NULL || *error == NULL);
+
+       ret = git_revwalk_hide_glob (_ggit_native_get (walker),
+                                    item);
+
+       if (ret != GIT_OK)
+       {
+               _ggit_error_set (error, ret);
+       }
+}
+
+/**
+ * ggit_revision_walker_hide_ref:
+ * @walker: a #GgitRevisionWalker.
+ * @item: the reference to hide.
+ * @error: a #GError.
+ *
+ * Hide the OID pointed to by the named reference to the revision walker.
+ *
+ **/
+void
+ggit_revision_walker_hide_ref (GgitRevisionWalker  *walker,
+                               const gchar         *item,
+                               GError             **error)
+{
+       gint ret;
+
+       g_return_if_fail (GGIT_IS_REVISION_WALKER (walker));
+       g_return_if_fail (item != NULL);
+       g_return_if_fail (error == NULL || *error == NULL);
+
+       ret = git_revwalk_hide_ref (_ggit_native_get (walker),
+                                   item);
+
+       if (ret != GIT_OK)
+       {
+               _ggit_error_set (error, ret);
+       }
+}
+
+/**
+ * ggit_revision_walker_hide_head:
+ * @walker: a #GgitRevisionWalker.
+ * @error: a #GError.
+ *
+ * Hide the OID of the current HEAD to the revision walker.
+ *
+ **/
+void
+ggit_revision_walker_hide_head (GgitRevisionWalker  *walker,
+                                GError             **error)
+{
+       gint ret;
+
+       g_return_if_fail (GGIT_IS_REVISION_WALKER (walker));
+       g_return_if_fail (error == NULL || *error == NULL);
+
+       ret = git_revwalk_hide_head (_ggit_native_get (walker));
+
+       if (ret != GIT_OK)
+       {
+               _ggit_error_set (error, ret);
+       }
+}
+
+/**
  * ggit_revision_walker_next:
  * @walker: a #GgitRevisionWalker.
  * @error: a #GError for error reporting, or %NULL.
diff --git a/libgit2-glib/ggit-revision-walker.h b/libgit2-glib/ggit-revision-walker.h
index 9336767..1512e0d 100644
--- a/libgit2-glib/ggit-revision-walker.h
+++ b/libgit2-glib/ggit-revision-walker.h
@@ -69,10 +69,36 @@ void                    ggit_revision_walker_push           (GgitRevisionWalker
                                                              GgitOId             *oid,
                                                              GError             **error);
 
+void                    ggit_revision_walker_push_glob      (GgitRevisionWalker  *walker,
+                                                             const gchar         *item,
+                                                             GError             **error);
+
+void                    ggit_revision_walker_push_ref       (GgitRevisionWalker  *walker,
+                                                             const gchar         *item,
+                                                             GError             **error);
+
+void                    ggit_revision_walker_push_head      (GgitRevisionWalker  *walker,
+                                                             GError             **error);
+
+void                    ggit_revision_walker_push_range     (GgitRevisionWalker  *walker,
+                                                             const gchar         *range,
+                                                             GError             **error);
+
 void                    ggit_revision_walker_hide           (GgitRevisionWalker  *walker,
                                                              GgitOId             *oid,
                                                              GError             **error);
 
+void                    ggit_revision_walker_hide_glob      (GgitRevisionWalker  *walker,
+                                                             const gchar         *item,
+                                                             GError             **error);
+
+void                    ggit_revision_walker_hide_ref      (GgitRevisionWalker  *walker,
+                                                             const gchar         *item,
+                                                             GError             **error);
+
+void                    ggit_revision_walker_hide_head      (GgitRevisionWalker  *walker,
+                                                             GError             **error);
+
 GgitOId                *ggit_revision_walker_next           (GgitRevisionWalker  *walker,
                                                              GError             **error);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]