anjuta r4576 - in trunk: . plugins/subversion



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]