anjuta r4576 - in trunk: . plugins/subversion
- From: jrliggett svn gnome org
- To: svn-commits-list gnome org
- Subject: anjuta r4576 - in trunk: . plugins/subversion
- Date: Mon, 12 Jan 2009 01:22:19 +0000 (UTC)
Author: jrliggett
Date: Mon Jan 12 01:22:18 2009
New Revision: 4576
URL: http://svn.gnome.org/viewvc/anjuta?rev=4576&view=rev
Log:
2009-01-11 Ignacio Casal Quinteiro <nacho resa gmail com>
reviewed by: James Liggett <jrliggett cox net>
* plugins/subversion/Makefile.am:
* plugins/subversion/svn-checkout-command.c
(svn_checkout_command_init), (svn_checkout_command_finalize),
(svn_checkout_command_run), (svn_checkout_command_class_init),
(svn_checkout_command_new), (svn_checkout_command_destroy):
* plugins/subversion/svn-checkout-command.h:
Add a checkout command to the Subversion plugin.
Partially fixes bug 531765.
Added:
trunk/plugins/subversion/svn-checkout-command.c
trunk/plugins/subversion/svn-checkout-command.h
Modified:
trunk/ChangeLog
trunk/plugins/subversion/Makefile.am
Modified: trunk/plugins/subversion/Makefile.am
==============================================================================
--- trunk/plugins/subversion/Makefile.am (original)
+++ trunk/plugins/subversion/Makefile.am Mon Jan 12 01:22:18 2009
@@ -97,7 +97,9 @@
svn-resolve-command.h \
svn-resolve-command.c \
subversion-vcs-interface.c \
- subversion-vcs-interface.h
+ subversion-vcs-interface.h \
+ svn-checkout-command.c \
+ svn-checkout-command.h
endif
Added: trunk/plugins/subversion/svn-checkout-command.c
==============================================================================
--- (empty file)
+++ trunk/plugins/subversion/svn-checkout-command.c Mon Jan 12 01:22:18 2009
@@ -0,0 +1,127 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
+/*
+ * anjuta
+ * Copyright (C) 2008 Ignacio Casal Quinteiro <nacho resa gmail com>
+ *
+ * anjuta is free software.
+ *
+ * You may redistribute it and/or modify it under the terms of the
+ * GNU General Public License, as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * anjuta is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with anjuta. If not, write to:
+ * The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "svn-checkout-command.h"
+
+struct _SvnCheckoutCommandPriv
+{
+ gchar *url;
+ gchar *path;
+};
+
+G_DEFINE_TYPE (SvnCheckoutCommand, svn_checkout_command, SVN_TYPE_COMMAND);
+
+static void
+svn_checkout_command_init (SvnCheckoutCommand *self)
+{
+ self->priv = g_new0 (SvnCheckoutCommandPriv, 1);
+}
+
+static void
+svn_checkout_command_finalize (GObject *object)
+{
+ SvnCheckoutCommand *self;
+
+ self = SVN_CHECKOUT_COMMAND (object);
+
+ g_free (self->priv->url);
+ g_free (self->priv->path);
+ g_free (self->priv);
+
+ G_OBJECT_CLASS (svn_checkout_command_parent_class)->finalize (object);
+}
+
+static guint
+svn_checkout_command_run (AnjutaCommand *command)
+{
+ SvnCheckoutCommand *self;
+ SvnCommand *svn_command;
+ svn_opt_revision_t revision;
+ svn_opt_revision_t peg_revision;
+ svn_error_t *error;
+ svn_revnum_t revision_number;
+ gchar *revision_message;
+
+ self = SVN_CHECKOUT_COMMAND (command);
+ svn_command = SVN_COMMAND (command);
+
+ revision.kind = svn_opt_revision_head;
+ peg_revision.kind = svn_opt_revision_unspecified;
+
+ error = svn_client_checkout3 (&revision_number,
+ self->priv->url,
+ self->priv->path,
+ &peg_revision,
+ &revision,
+ svn_depth_unknown,
+ TRUE,
+ FALSE,
+ svn_command_get_client_context (svn_command),
+ svn_command_get_pool (svn_command));
+
+ if (error)
+ {
+ svn_command_set_error (svn_command, error);
+ return 1;
+ }
+
+ revision_message = g_strdup_printf ("Checked out revision %ld.",
+ (glong) revision_number);
+ svn_command_push_info (SVN_COMMAND (command), revision_message);
+ g_free (revision_message);
+
+ return 0;
+}
+
+static void
+svn_checkout_command_class_init (SvnCheckoutCommandClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ AnjutaCommandClass *command_class = ANJUTA_COMMAND_CLASS (klass);
+
+ object_class->finalize = svn_checkout_command_finalize;
+ command_class->run = svn_checkout_command_run;
+}
+
+
+SvnCheckoutCommand *
+svn_checkout_command_new (const gchar *url, const gchar *path)
+{
+ SvnCheckoutCommand *self;
+
+ self = g_object_new (SVN_TYPE_CHECKOUT_COMMAND, NULL);
+
+ self->priv->url = svn_command_make_canonical_path (SVN_COMMAND (self),
+ (gchar*) url);
+ self->priv->path = svn_command_make_canonical_path (SVN_COMMAND (self),
+ (gchar*) path);
+
+ return self;
+}
+
+void
+svn_checkout_command_destroy (SvnCheckoutCommand *self)
+{
+ g_object_unref (self);
+}
Added: trunk/plugins/subversion/svn-checkout-command.h
==============================================================================
--- (empty file)
+++ trunk/plugins/subversion/svn-checkout-command.h Mon Jan 12 01:22:18 2009
@@ -0,0 +1,63 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
+/*
+ * anjuta
+ * Copyright (C) 2008 Ignacio Casal Quinteiro <nacho resa gmail com>
+ *
+ * anjuta is free software.
+ *
+ * You may redistribute it and/or modify it under the terms of the
+ * GNU General Public License, as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * anjuta is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with anjuta. If not, write to:
+ * The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _SVN_CHECKOUT_COMMAND_H_
+#define _SVN_CHECKOUT_COMMAND_H_
+
+#include <glib-object.h>
+#include "svn-command.h"
+
+G_BEGIN_DECLS
+
+#define SVN_TYPE_CHECKOUT_COMMAND (svn_checkout_command_get_type ())
+#define SVN_CHECKOUT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SVN_TYPE_CHECKOUT_COMMAND, SvnCheckoutCommand))
+#define SVN_CHECKOUT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SVN_TYPE_CHECKOUT_COMMAND, SvnCheckoutCommandClass))
+#define SVN_IS_CHECKOUT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SVN_TYPE_CHECKOUT_COMMAND))
+#define SVN_IS_CHECKOUT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SVN_TYPE_CHECKOUT_COMMAND))
+#define SVN_CHECKOUT_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SVN_TYPE_CHECKOUT_COMMAND, SvnCheckoutCommandClass))
+
+typedef struct _SvnCheckoutCommandClass SvnCheckoutCommandClass;
+typedef struct _SvnCheckoutCommand SvnCheckoutCommand;
+typedef struct _SvnCheckoutCommandPriv SvnCheckoutCommandPriv;
+
+struct _SvnCheckoutCommandClass
+{
+ SvnCommandClass parent_class;
+};
+
+struct _SvnCheckoutCommand
+{
+ SvnCommand parent_instance;
+
+ SvnCheckoutCommandPriv *priv;
+};
+
+GType svn_checkout_command_get_type (void) G_GNUC_CONST;
+SvnCheckoutCommand * svn_checkout_command_new (const gchar *url,
+ const gchar *path);
+void svn_checkout_command_destroy (SvnCheckoutCommand *self);
+
+G_END_DECLS
+
+#endif /* _SVN_CHECKOUT_COMMAND_H_ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]