[commit] r1586 - trunk/GME/XmlBackEnd/SVNCode

GMESRC Repository Notifications gme-commit at list.isis.vanderbilt.edu
Tue Oct 4 18:03:16 CDT 2011


Author: ksmyth
Date: Tue Oct  4 18:03:16 2011
New Revision: 1586

Log:
Cache svn context, since recreating it rereads the user config and does other slow things

Modified:
   trunk/GME/XmlBackEnd/SVNCode/Client.cpp
   trunk/GME/XmlBackEnd/SVNCode/Client.h

Modified: trunk/GME/XmlBackEnd/SVNCode/Client.cpp
==============================================================================
--- trunk/GME/XmlBackEnd/SVNCode/Client.cpp	Tue Oct  4 14:49:32 2011	(r1585)
+++ trunk/GME/XmlBackEnd/SVNCode/Client.cpp	Tue Oct  4 18:03:16 2011	(r1586)
@@ -46,6 +46,8 @@
 	setPrompt( Prompter::makePrompter( new GPromptImpl()));
 	// we set this:
 	notification2( new ClientUtil::NotifyHelp());
+	m_ctx = NULL;
+	m_ctxPool = std::auto_ptr<Pool>(new Pool());
 }
 
 Client::~Client(void)
@@ -619,6 +621,17 @@
 
 svn_client_ctx_t * Client::getContext(const char *p_strMessage, apr_pool_t *pool)
 {
+	if (m_ctx == NULL)
+	{
+		m_ctx = createContext(NULL, m_ctxPool->pool());
+	}
+	m_commitMessage = p_strMessage ? p_strMessage : "Empty";
+	((ClientUtil::CommitHelp::LogMsgBaton*)m_ctx->log_msg_baton2)->m_message = m_commitMessage.c_str();
+	return m_ctx;
+}
+
+svn_client_ctx_t * Client::createContext(const char *p_strMessage, apr_pool_t *pool)
+{
 	svn_auth_baton_t *ab;
 	svn_client_ctx_t *ctx;
 	svn_error_t *err = NULL;

Modified: trunk/GME/XmlBackEnd/SVNCode/Client.h
==============================================================================
--- trunk/GME/XmlBackEnd/SVNCode/Client.h	Tue Oct  4 14:49:32 2011	(r1585)
+++ trunk/GME/XmlBackEnd/SVNCode/Client.h	Tue Oct  4 18:03:16 2011	(r1586)
@@ -27,6 +27,7 @@
 #include "svn_client.h"
 #include "Prompter.h"
 #include "ClientUtil.h"
+#include "Pool.h"
 
 // class mimicing subversion/bindings/java/javahl/native/svnclient.cpp
 class CommitMessage;
@@ -74,6 +75,10 @@
 	long sub_mkdir( Targets& targets, const char * p_msg);
 	long sub_mkdir2( Targets& targets, const char * p_msg);
 
+	std::auto_ptr<Pool> m_ctxPool;
+	svn_client_ctx_t* m_ctx;
+	std::string m_commitMessage;
+	svn_client_ctx_t * createContext(const char *p_message, apr_pool_t *pool);
 	svn_client_ctx_t * getContext(const char *p_message, apr_pool_t *pool);
 
 	//void * getCommitMessageBaton(const char *message);


More information about the gme-commit mailing list