You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Cédric Chabanois <cc...@ifrance.com> on 2003/08/17 21:33:43 UTC

[PATCH] javahl

Hi all,

In this patch :
- handleSVNError now takes only one parameter. The second parameter was 
never used
- mkdir takes an array of paths instead of a single path, same thing for 
remove
- many modifications in Status class
- propertyGet added
- some other modifications

Daniel Bradby and I use javahl with svnant and subclipse ( 
http://subclipse.tigris.org/ )

I use svnant junit testcases to test these modifications.

Cédric


Index: native/SVNClient.cpp
===================================================================
--- native/SVNClient.cpp    (revision 6771)
+++ native/SVNClient.cpp    (working copy)
@@ -35,6 +35,7 @@
 #include <svn_path.h>
 #include "org_tigris_subversion_javahl_Status_Kind.h"
 #include "org_tigris_subversion_javahl_Revision.h"
+#include "org_tigris_subversion_javahl_NodeKind.h"
 #include <vector>
 #include <iostream>
 //////////////////////////////////////////////////////////////////////
@@ -126,6 +127,9 @@
     return m_lastPath.c_str();
 }
 
+/**
+ * List directory entries of a URL
+ */
 jobjectArray SVNClient::list(const char *url, Revision &revision, bool 
recurse)
 {
     Pool subPool;
@@ -189,7 +193,7 @@
     }
     else
     {
-        JNIUtil::handleSVNError(Err, NULL);
+        JNIUtil::handleSVNError(Err);
         return NULL;
     }
 }
@@ -260,15 +264,13 @@
     }
     else
     {
-        JNIUtil::handleSVNError(Err, NULL);
+        JNIUtil::handleSVNError(Err);
         return NULL;
     }
 }
 
 jobject SVNClient::singleStatus(const char *path, bool onServer)
 {
-    //JNIUtil::logMessage("entering singleStatus");
-    //JNIUtil::logMessage(path);
     Pool subPool;
     apr_hash_t *status_hash;
     svn_revnum_t youngest = SVN_INVALID_REVNUM;
@@ -279,13 +281,11 @@
         return NULL;
     }
 
-    //JNIUtil::logMessage("after getContext");
     svn_error_t *Err = svn_client_status (&status_hash, &youngest, 
path, false, TRUE,
                              onServer ? TRUE : FALSE,     //update
                              FALSE,     //no_ignore,
                              ctx,
                              subPool.pool());
-    //JNIUtil::logMessage("after svn_client_status");
     if(Err == NULL)
     {
       apr_array_header_t *statusarray =
@@ -297,12 +297,11 @@
       item = &APR_ARRAY_IDX (statusarray, 0, const svn_item_t);
       status = (svn_wc_status_t *) item->value;
 
-      //JNIUtil::logMessage("before createJavaStatus");
       return createJavaStatus((const char *) item->key, status);
     }
     else
     {
-         JNIUtil::handleSVNError(Err, NULL);
+         JNIUtil::handleSVNError(Err);
         return NULL;
     }
 }
@@ -383,7 +382,7 @@
     }
     else
     {
-         JNIUtil::handleSVNError(Err, NULL);
+         JNIUtil::handleSVNError(Err);
         return NULL;
     }
 }
@@ -409,7 +408,7 @@
                                  apr_pool);
 
     if(Err != NULL)
-        JNIUtil::handleSVNError(Err, NULL);
+        JNIUtil::handleSVNError(Err);
 
 }
 
@@ -419,24 +418,22 @@
     m_notify = notify;
 }
 
-void SVNClient::remove(const char *path, const char *message, bool force)
+void SVNClient::remove(Targets &targets, const char *message, bool force)
 {
     svn_client_commit_info_t *commit_info = NULL;
     Pool subPool;
     apr_pool_t * apr_pool = subPool.pool ();
-    m_lastPath = path;
+//    m_lastPath = path;
     svn_client_ctx_t *ctx = getContext(message);
     if(ctx == NULL)
     {
         return;
     }
 
-    Targets targets(path);
-
-    svn_error_t *Err = svn_client_delete (&commit_info, 
targets.array(subPool), force,
+    svn_error_t *Err = svn_client_delete (&commit_info, 
(apr_array_header_t *)targets.array(subPool), force,
                                 ctx, apr_pool);
     if(Err != NULL)
-         JNIUtil::handleSVNError(Err, NULL);
+         JNIUtil::handleSVNError(Err);
 
 }
 
@@ -453,7 +450,7 @@
     svn_error_t *Err = svn_client_revert (m_lastPath.c_str (), recurse, 
ctx, apr_pool);
 
     if(Err != NULL)
-         JNIUtil::handleSVNError(Err, NULL);
+         JNIUtil::handleSVNError(Err);
 
 }
 
@@ -471,7 +468,7 @@
     svn_error_t *Err = svn_client_add (m_lastPath.c_str (), recurse, 
ctx, apr_pool);
 
     if(Err != NULL)
-         JNIUtil::handleSVNError(Err, NULL);
+         JNIUtil::handleSVNError(Err);
 
 
 }
@@ -492,7 +489,7 @@
                                ctx,
                                apr_pool);
     if(Err != NULL)
-         JNIUtil::handleSVNError(Err, NULL);
+         JNIUtil::handleSVNError(Err);
 
 }
 
@@ -512,13 +509,12 @@
                                targets.array (subPool),
                                !recurse, ctx, apr_pool);
     if(Err != NULL)
-         JNIUtil::handleSVNError(Err, NULL);
+         JNIUtil::handleSVNError(Err);
 
     if(commit_info && SVN_IS_VALID_REVNUM (commit_info->revision))
       return commit_info->revision;
 
     return -1;
-    return -1;
 }
 
 void SVNClient::copy(const char *srcPath, const char *destPath, const 
char *message, Revision &revision)
@@ -539,11 +535,10 @@
                              sourcePath.c_str (),
                              revision.revision(),
                              m_lastPath.c_str (),
-                             NULL,
                              ctx,
                              apr_pool);
     if(Err != NULL)
-         JNIUtil::handleSVNError(Err, NULL);
+         JNIUtil::handleSVNError(Err);
 
 }
 
@@ -569,29 +564,28 @@
                              ctx,
                              apr_pool);
     if(Err != NULL)
-         JNIUtil::handleSVNError(Err, NULL);
+         JNIUtil::handleSVNError(Err);
 }
 
-void SVNClient::mkdir(const char *path, const char *message)
+void SVNClient::mkdir(Targets &targets, const char *message)
 {
     Pool subPool;
     apr_pool_t * apr_pool = subPool.pool ();
     svn_client_commit_info_t *commit_info = NULL;
-    m_lastPath = path;
+//    m_lastPath = path;
        svn_client_ctx_t *ctx = getContext(message);
     if(ctx == NULL)
     {
         return;
     }
 
-    Targets targets(path);
     svn_error_t *Err = svn_client_mkdir (&commit_info,
-                              targets.array(subPool),
+                              (apr_array_header_t *)targets.array(subPool),
                               ctx,
                               apr_pool);
 
     if(Err != NULL)
-         JNIUtil::handleSVNError(Err, NULL);
+         JNIUtil::handleSVNError(Err);
 
 }
 
@@ -608,7 +602,7 @@
     svn_error_t *Err = svn_client_cleanup (m_lastPath.c_str (), ctx, 
apr_pool);
 
     if(Err != NULL)
-         JNIUtil::handleSVNError(Err, NULL);
+         JNIUtil::handleSVNError(Err);
 
 }
 
@@ -628,11 +622,11 @@
                                 apr_pool);
 
     if(Err != NULL)
-         JNIUtil::handleSVNError(Err, NULL);
+         JNIUtil::handleSVNError(Err);
 
 }
 
-void SVNClient::doExport(const char *srcPath, const char *destPath, 
Revision &revision)
+void SVNClient::doExport(const char *srcPath, const char *destPath, 
Revision &revision,bool force)
 {
     Pool subPool;
     apr_pool_t * apr_pool = subPool.pool ();
@@ -647,12 +641,12 @@
                                m_lastPath.c_str (),
                                const_cast<svn_opt_revision_t*>(
                                  revision.revision ()),
-                               false, // force
+                               force,    
                                ctx,
                                apr_pool);
 
     if(Err != NULL)
-         JNIUtil::handleSVNError(Err, NULL);
+         JNIUtil::handleSVNError(Err);
 
 
 }
@@ -676,10 +670,10 @@
                                apr_pool);
 
     if(Err != NULL)
-         JNIUtil::handleSVNError(Err, NULL);
+         JNIUtil::handleSVNError(Err);
 }
 
-void SVNClient::doImport(const char *path, const char *url, const char 
*newEntry, const char *message, bool recurse)
+void SVNClient::doImport(const char *path, const char *url, const char 
*message, bool recurse)
 {
     Pool subPool;
     apr_pool_t * apr_pool = subPool.pool ();
@@ -694,13 +688,12 @@
     svn_error_t *Err = svn_client_import (&commit_info,
                                m_lastPath.c_str (),
                                url,
-                               //newEntry,
                                !recurse,
                                ctx,
                                apr_pool);
 
     if(Err != NULL)
-         JNIUtil::handleSVNError(Err, NULL);
+         JNIUtil::handleSVNError(Err);
 
 }
 
@@ -723,17 +716,60 @@
                               revision2.revision (),
                               localPath,
                               recurse,
+                              FALSE,   // ignore_ancestry
                               force,
                               FALSE,
-                              FALSE,
                               ctx,
                               apr_pool);
 
     if(Err != NULL)
-         JNIUtil::handleSVNError(Err, NULL);
+         JNIUtil::handleSVNError(Err);
 
 }
 
+/**
+ * Get a property
+ */
+jobject SVNClient::propertyGet(jobject jthis, const char *path, const 
char *name)
+{
+  Pool subPool;
+  apr_pool_t * apr_pool = subPool.pool ();
+  m_lastPath = path;
+    
+  Revision rev(Revision::START);
+  svn_client_ctx_t *ctx = getContext(NULL);
+  if(ctx == NULL)
+  {
+    return NULL;
+  }
+  
+  apr_hash_t *props;
+  svn_error_t *Err = svn_client_propget(&props,
+                    name,
+                    m_lastPath.c_str(),
+                    rev.revision(),
+                    false,
+                    ctx,
+                    apr_pool);
+
+  if(Err != NULL)
+  {
+     JNIUtil::handleSVNError(Err);
+    return NULL;
+  }
+
+  apr_hash_index_t *hi;
+  hi = apr_hash_first (apr_pool, props); // only one element since we 
disabled recurse
+  if (hi == NULL)
+      return NULL; // no property with this name
+
+  const char *filename;
+  svn_string_t *propval;
+  apr_hash_this (hi, (const void **)&filename, NULL, (void**)&propval);
+
+  return createJavaProperty(jthis, path, name, propval);
+}
+
 jobjectArray SVNClient::properties(jobject jthis, const char *path)
 {
   apr_array_header_t * props;
@@ -748,7 +784,6 @@
     return NULL;
   }
 
-
   svn_error_t *Err = svn_client_proplist (&props,
                                m_lastPath.c_str (),
                                rev.revision(),
@@ -757,7 +792,7 @@
                                apr_pool);
   if(Err != NULL)
   {
-     JNIUtil::handleSVNError(Err, NULL);
+     JNIUtil::handleSVNError(Err);
     return NULL;
   }
 
@@ -918,6 +953,7 @@
       svn_auth_set_parameter(ab, SVN_AUTH_PARAM_DEFAULT_PASSWORD,
                              m_passWord.c_str());
 
+
     ctx->auth_baton = ab;
     ctx->prompt_func = NULL;
     ctx->prompt_baton = NULL;
@@ -926,9 +962,9 @@
     ctx->log_msg_func = getCommitMessage;
     ctx->log_msg_baton = getCommitMessageBaton(message);
     svn_error_t *err = NULL;
-    if (( err = svn_config_get_config (&(ctx->config), 
JNIUtil::getRequestPool()->pool())))
+    if (( err = svn_config_get_config (&(ctx->config), NULL, 
JNIUtil::getRequestPool()->pool())))
     {
-        JNIUtil::handleSVNError(err, NULL);
+        JNIUtil::handleSVNError(err);
         return NULL;
     }
 
@@ -964,6 +1000,7 @@
     }
     return NULL;
 }
+
 jobject SVNClient::createJavaStatus(const char *path, svn_wc_status_t 
*status)
 {
     JNIEnv *env = JNIUtil::getEnv();
@@ -972,45 +1009,41 @@
     {
         return NULL;
     }
-    //JNIUtil::logMessage("after FindClass");
     static jmethodID mid = 0;
     if(mid == 0)
     {
-        mid = env->GetMethodID(clazz, "<init>", 
"(Ljava/lang/String;ZJJLjava/lang/String;IIZZZIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V");
+        mid = env->GetMethodID(clazz, "<init>",
+           
 "(Ljava/lang/String;Ljava/lang/String;IJJJLjava/lang/String;IIIIZZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
         if(JNIUtil::isJavaExceptionThrown())
         {
             return NULL;
         }
-        //JNIUtil::logMessage("after MethodID");
     }
     jstring jPath = JNIUtil::makeJString(path);
     if(JNIUtil::isJavaExceptionThrown())
     {
         return NULL;
     }
-    //JNIUtil::logMessage("after makeJString(path)");
 
-    jboolean jIsVersioned = JNI_FALSE;
-    jboolean jIsDir = JNI_FALSE;
-    jboolean jIsCopied = JNI_FALSE;
-    jboolean jIsLocked = JNI_FALSE;
+    jstring jUrl = NULL;
+    jint jNodeKind = org_tigris_subversion_javahl_NodeKind_unknown;
     jlong jRevision = 
org_tigris_subversion_javahl_Revision_SVN_INVALID_REVNUM;
-    jlong jLastChanged = 0;
+    jlong jLastChangedRevision = 
org_tigris_subversion_javahl_Revision_SVN_INVALID_REVNUM;
+    jlong jLastChangedDate = 0;
     jstring jLastCommitAuthor = NULL;
     jint jTextType = org_tigris_subversion_javahl_Status_Kind_none;
     jint jPropType = org_tigris_subversion_javahl_Status_Kind_none;
     jint jRepositoryTextType = 
org_tigris_subversion_javahl_Status_Kind_none;
     jint jRepositoryPropType = 
org_tigris_subversion_javahl_Status_Kind_none;
+    jboolean jIsLocked = JNI_FALSE;
+    jboolean jIsCopied = JNI_FALSE;
+    jstring jConflictOld = NULL;
     jstring jConflictNew = NULL;
-    jstring jConflictOld = NULL;
     jstring jConflictWorking = NULL;
-    jstring jURL = NULL;
-    jstring jURLCopiedFrom = NULL;
-    jlong jRevisionCopiedFrom = 
org_tigris_subversion_javahl_Revision_SVN_INVALID_REVNUM;
 
     if(status != NULL)
     {
-        jIsVersioned = (status->text_status > 
svn_wc_status_unversioned) ? JNI_TRUE : JNI_FALSE;
+
         jTextType = mapStatusKind(status->text_status);
         jPropType = mapStatusKind(status->prop_status);
         jRepositoryTextType = mapStatusKind(status->repos_text_status);
@@ -1018,72 +1051,67 @@
         jIsCopied = (status->copied == 1) ? JNI_TRUE: JNI_FALSE;
         jIsLocked = (status->locked == 1) ? JNI_TRUE: JNI_FALSE;
 
+
         svn_wc_entry_t * entry = status->entry;
         if (entry != NULL)
         {
+            jUrl = JNIUtil::makeJString(entry->url);
+            if(JNIUtil::isJavaExceptionThrown())
+            {
+                return NULL;
+            }
+            jNodeKind = entry->kind;
             jRevision = entry->revision;
-            jLastChanged = entry->cmt_rev;
+            jLastChangedRevision = entry->cmt_rev;
+            jLastChangedDate = entry->cmt_date;
             jLastCommitAuthor = JNIUtil::makeJString(entry->cmt_author);
             if(JNIUtil::isJavaExceptionThrown())
             {
                 return NULL;
             }
-            //JNIUtil::logMessage("after makeJString(entry->cmt_author)");
-            jIsDir = (entry->kind == svn_node_dir) ? JNI_TRUE: JNI_FALSE;
+
             jConflictNew = JNIUtil::makeJString(entry->conflict_new);
             if(JNIUtil::isJavaExceptionThrown())
             {
                 return NULL;
             }
-            //JNIUtil::logMessage("after 
makeJString(entry->conflict_new)");
             jConflictOld = JNIUtil::makeJString(entry->conflict_old);
             if(JNIUtil::isJavaExceptionThrown())
             {
                 return NULL;
             }
-            //JNIUtil::logMessage("after 
makeJString(entry->conflict_old)");
             jConflictWorking= JNIUtil::makeJString(entry->conflict_wrk);
             if(JNIUtil::isJavaExceptionThrown())
             {
                 return NULL;
             }
-            //JNIUtil::logMessage("after 
makeJString(entry->conflict_work)");
-            jURL = JNIUtil::makeJString(entry->url);
+        }
+    }
+
+    jobject ret = env->NewObject(clazz, mid, jPath, jUrl, jNodeKind, 
jRevision, jLastChangedRevision, jLastChangedDate, jLastCommitAuthor,
+        jTextType, jPropType, jRepositoryTextType, jRepositoryPropType, 
jIsLocked, jIsCopied, jConflictOld, jConflictNew, jConflictWorking);
             if(JNIUtil::isJavaExceptionThrown())
             {
                 return NULL;
             }
-            //JNIUtil::logMessage("after 
makeJString(entry->conflict_work)");
-            jURLCopiedFrom = JNIUtil::makeJString(entry->copyfrom_url);
+    env->DeleteLocalRef(clazz);
             if(JNIUtil::isJavaExceptionThrown())
             {
                 return NULL;
             }
-            //JNIUtil::logMessage("after 
makeJString(entry->copyfrom_url)");
-            jRevisionCopiedFrom = entry->copyfrom_rev;
-        }
-    }
-
-    jobject ret = env->NewObject(clazz, mid, jPath, jIsDir, jRevision, 
jLastChanged, jLastCommitAuthor,
-        jTextType, jPropType, jIsVersioned, jIsLocked, jIsCopied, 
jRepositoryTextType, jRepositoryPropType,
-        jConflictOld, jConflictNew, jConflictWorking, jURL, 
jURLCopiedFrom, jRevisionCopiedFrom);
+    env->DeleteLocalRef(jPath);
     if(JNIUtil::isJavaExceptionThrown())
     {
         return NULL;
     }
-    //JNIUtil::logMessage("NewObject");
-    env->DeleteLocalRef(clazz);
-    if(JNIUtil::isJavaExceptionThrown())
+    if (jUrl != NULL)
     {
-        return NULL;
-    }
-    //JNIUtil::logMessage("DeleteLocalRef(clazz)");
-    env->DeleteLocalRef(jPath);
+        env->DeleteLocalRef(jUrl);
     if(JNIUtil::isJavaExceptionThrown())
     {
         return NULL;
     }
-    //JNIUtil::logMessage("DeleteLocalRef(jPath)");
+    }
     if(jLastCommitAuthor != NULL)
     {
         env->DeleteLocalRef(jLastCommitAuthor);
@@ -1091,7 +1119,6 @@
         {
             return NULL;
         }
-        //JNIUtil::logMessage("DeleteLocalRef(jLastCommitAuthor)");
     }
     if(jConflictNew != NULL)
     {
@@ -1100,7 +1127,6 @@
         {
             return NULL;
         }
-        //JNIUtil::logMessage("DeleteLocalRef(jConflictNew)");
     }
     if(jConflictOld != NULL)
     {
@@ -1109,7 +1135,6 @@
         {
             return NULL;
         }
-        //JNIUtil::logMessage("DeleteLocalRef(jConflictOld)");
     }
     if(jConflictWorking != NULL)
     {
@@ -1118,28 +1143,10 @@
         {
             return NULL;
         }
-        //JNIUtil::logMessage("DeleteLocalRef(jConflictWorking");
     }
-    if(jURL != NULL)
-    {
-        env->DeleteLocalRef(jURL);
-        if(JNIUtil::isJavaExceptionThrown())
-        {
-            return NULL;
-        }
-        //JNIUtil::logMessage("DeleteLocalRef(jURL");
-    }
-    if(jURLCopiedFrom != NULL)
-    {
-        env->DeleteLocalRef(jURLCopiedFrom);
-        if(JNIUtil::isJavaExceptionThrown())
-        {
-            return NULL;
-        }
-        //JNIUtil::logMessage("DeleteLocalRef(jURLCopiedFrom");
-    }
     return ret;
 }
+
 jint SVNClient::mapStatusKind(int svnKind)
 {
     switch(svnKind)
@@ -1165,8 +1172,12 @@
         return org_tigris_subversion_javahl_Status_Kind_merged;
     case svn_wc_status_conflicted:
         return org_tigris_subversion_javahl_Status_Kind_conflicted;
+    case svn_wc_status_ignored:
+        return org_tigris_subversion_javahl_Status_Kind_ignored;
     case svn_wc_status_obstructed:
         return org_tigris_subversion_javahl_Status_Kind_obstructed;
+    case svn_wc_status_incomplete:
+        return org_tigris_subversion_javahl_Status_Kind_incomplete;
     }
 }
 svn_error_t *SVNClient::messageReceiver (void *baton, apr_hash_t * 
changed_paths,
@@ -1318,7 +1329,7 @@
   svn_error_t * error = svn_client_propset (name, value, path,
                                 recurse, 
JNIUtil::getRequestPool()->pool());
   if(error != NULL)
-         JNIUtil::handleSVNError(error, NULL);
+         JNIUtil::handleSVNError(error);
 }
 
 jbyteArray SVNClient::fileContent(const char *path, Revision &revision)
@@ -1338,7 +1349,7 @@
                                pool.pool());
         if(err != NULL)
         {
-            JNIUtil::handleSVNError(err, NULL);
+            JNIUtil::handleSVNError(err);
             return NULL;
         }
         apr_file_t *file = NULL;
@@ -1372,7 +1383,7 @@
                 path, revision.revision(), ctx, pool.pool());
         if(err != NULL)
         {
-            JNIUtil::handleSVNError(err, NULL);
+            JNIUtil::handleSVNError(err);
             return NULL;
         }
         size = buf->len;
@@ -1399,7 +1410,7 @@
     if(err != NULL)
     {
         env->ReleaseByteArrayElements(ret, retdata, 0);
-        JNIUtil::handleSVNError(err, NULL);
+        JNIUtil::handleSVNError(err);
         return NULL;
     }
     env->ReleaseByteArrayElements(ret, retdata, 0);
@@ -1412,6 +1423,9 @@
     return ret;
 }
 
+/**
+ * create a DirEntry java object from svn_dirent_t structure
+ */
 jobject SVNClient::createJavaDirEntry(const char *path, svn_dirent_t 
*dirent)
 {
     JNIEnv *env = JNIUtil::getEnv();
@@ -1489,14 +1503,14 @@
 
   if(error != SVN_NO_ERROR)
   {
-     JNIUtil::handleSVNError(error, NULL);
+     JNIUtil::handleSVNError(error);
     return NULL;
   }
    
   if(URL == NULL)
   {
       
JNIUtil::handleSVNError(svn_error_create(SVN_ERR_UNVERSIONED_RESOURCE, NULL,
-                                "Either a URL or versioned item is 
required."), NULL);
+                                "Either a URL or versioned item is 
required."));
       return NULL;
   }
       
@@ -1505,7 +1519,7 @@
                                        &set_rev, ctx, apr_pool);
   if(error != SVN_NO_ERROR)
   {
-     JNIUtil::handleSVNError(error, NULL);
+     JNIUtil::handleSVNError(error);
     return NULL;
   }
 
Index: native/JNIUtil.h
===================================================================
--- native/JNIUtil.h    (revision 6771)
+++ native/JNIUtil.h    (working copy)
@@ -56,7 +56,7 @@
     static bool isExceptionThrown();
     static void handleAPRError(int error, const char *op);
     static void putFinalizedClient(SVNClient *cl);
-    static void handleSVNError(svn_error *err, const char *message);
+    static void handleSVNError(svn_error *err);
     static void throwError(const char *message);
     static apr_pool_t * getPool();
     static bool JNIInit(JNIEnv *env);
Index: native/svnjavahl.dsp
===================================================================
--- native/svnjavahl.dsp    (revision 6771)
+++ native/svnjavahl.dsp    (working copy)
@@ -55,7 +55,12 @@
 # ADD BSC32 /nologo
 LINK32=link.exe
 # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib 
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 
odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 "C:\program files\microsoft sdk\lib\shfolder.lib" 
ws2_32.lib Rpcrt4.lib Mswsock.lib 
../../../../../db4-win32\lib\libdb41.lib 
../../../../../Release/subversion/libsvn_fs/libsvn_fs-1.lib 
../../../../../Release/subversion/libsvn_diff/libsvn_diff-1.lib 
../../../../../Release/subversion/libsvn_repos/libsvn_repos-1.lib 
../../../../../Release/subversion/libsvn_delta/libsvn_delta-1.lib 
../../../../../Release/subversion/libsvn_ra_dav/libsvn_ra_dav-1.lib 
../../../../../Release/subversion/libsvn_ra_svn/libsvn_ra_svn-1.lib 
../../../../../Release/subversion/libsvn_ra_local/libsvn_ra_local-1.lib 
../../../../../Release/subversion/libsvn_ra/libsvn_ra-1.lib 
../../../../../Release/subversion/libsvn_wc/libsvn_wc-1.lib 
../../../../../apr/LibR/apr.lib 
../../../../../apr-iconv/LibR/apriconv.lib 
../../../../../apr-util/LibR/aprutil.lib 
../../../../../Release/subversion/libsvn_subr/libsvn_subr-1.lib 
../../../../../Release/subversion/libsvn_client/libsvn_client-1.lib 
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib 
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib 
/nologo /dll /machine:I386
+# ADD LINK32 ../../../../../db4-win32\lib\libdb41.lib 
../../../../../Release/subversion/libsvn_fs/libsvn_fs-1.lib 
../../../../../Release/subversion/libsvn_diff/libsvn_diff-1.lib 
../../../../../Release/subversion/libsvn_repos/libsvn_repos-1.lib 
../../../../../Release/subversion/libsvn_delta/libsvn_delta-1.lib 
../../../../../Release/subversion/libsvn_ra_dav/libsvn_ra_dav-1.lib 
../../../../../Release/subversion/libsvn_ra_svn/libsvn_ra_svn-1.lib 
../../../../../Release/subversion/libsvn_ra_local/libsvn_ra_local-1.lib 
../../../../../Release/subversion/libsvn_ra/libsvn_ra-1.lib 
../../../../../Release/subversion/libsvn_wc/libsvn_wc-1.lib 
../../../../../apr/LibR/apr.lib 
../../../../../apr-iconv/LibR/apriconv.lib 
../../../../../apr-util/LibR/aprutil.lib 
../../../../../Release/subversion/libsvn_subr/libsvn_subr-1.lib 
../../../../../Release/subversion/libsvn_client/libsvn_client-1.lib 
shfolder.lib Rpcrt4.lib Mswsock.lib ws2_32.lib kernel32.lib user32.lib 
gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib 
oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=createJar
+PostBuild_Cmds=jar cvf javahl.jar -C ../cls .
+# End Special Build Tool
 
 !ELSEIF  "$(CFG)" == "svnjavahl - Win32 Debug"
 
@@ -81,7 +86,12 @@
 # ADD BSC32 /nologo
 LINK32=link.exe
 # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib 
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 
odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Rpcrt4.lib Mswsock.lib "C:\program files\microsoft 
sdk\lib\shfolder.lib" ../../../../../db4-win32\lib\libdb41d.lib 
../../../../../Debug/subversion/libsvn_fs/libsvn_fs-1.lib 
../../../../../Debug/subversion/libsvn_repos/libsvn_repos-1.lib 
../../../../../Debug/subversion/libsvn_delta/libsvn_delta-1.lib 
../../../../../Debug/subversion/libsvn_ra_dav/libsvn_ra_dav-1.lib 
../../../../../Debug/subversion/libsvn_ra_svn/libsvn_ra_svn-1.lib 
../../../../../Debug/subversion/libsvn_ra_local/libsvn_ra_local-1.lib 
../../../../../Debug/subversion/libsvn_ra/libsvn_ra-1.lib 
../../../../../Debug/subversion/libsvn_wc/libsvn_wc-1.lib 
../../../../../apr/LibD/apr.lib 
../../../../../apr-iconv/LibD/apriconv.lib 
../../../../../apr-util/LibD/aprutil.lib 
../../../../../Debug/subversion/libsvn_subr/libsvn_subr-1.lib 
../../../../../Debug/subversion/libsvn_diff/libsvn_diff-1.lib 
../../../../../Debug/subversion/libsvn_client/libsvn_client-1.lib 
ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib 
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib 
odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 ../../../../../db4-win32\lib\libdb41d.lib 
../../../../../Debug/subversion/libsvn_fs/libsvn_fs-1.lib 
../../../../../Debug/subversion/libsvn_repos/libsvn_repos-1.lib 
../../../../../Debug/subversion/libsvn_delta/libsvn_delta-1.lib 
../../../../../Debug/subversion/libsvn_ra_dav/libsvn_ra_dav-1.lib 
../../../../../Debug/subversion/libsvn_ra_svn/libsvn_ra_svn-1.lib 
../../../../../Debug/subversion/libsvn_ra_local/libsvn_ra_local-1.lib 
../../../../../Debug/subversion/libsvn_ra/libsvn_ra-1.lib 
../../../../../Debug/subversion/libsvn_wc/libsvn_wc-1.lib 
../../../../../apr/LibD/apr.lib 
../../../../../apr-iconv/LibD/apriconv.lib 
../../../../../apr-util/LibD/aprutil.lib 
../../../../../Debug/subversion/libsvn_subr/libsvn_subr-1.lib 
../../../../../Debug/subversion/libsvn_diff/libsvn_diff-1.lib 
../../../../../Debug/subversion/libsvn_client/libsvn_client-1.lib 
shfolder.lib Rpcrt4.lib Mswsock.lib ws2_32.lib kernel32.lib user32.lib 
gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib 
oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug 
/machine:I386 /pdbtype:sept
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=createJar
+PostBuild_Cmds=jar cvf javahl.jar -C ../cls .
+# End Special Build Tool
 
 !ELSEIF  "$(CFG)" == "svnjavahl - Win32 Release DB40"
 
@@ -108,8 +118,13 @@
 # ADD BSC32 /nologo
 LINK32=link.exe
 # ADD BASE LINK32 ws2_32.lib Rpcrt4.lib Mswsock.lib 
../../../../../db4-win32\lib\libdb41.lib 
../../../../../Release/subversion/libsvn_fs/libsvn_fs-1.lib 
../../../../../Release/subversion/libsvn_diff/libsvn_diff-1.lib 
../../../../../Release/subversion/libsvn_repos/libsvn_repos-1.lib 
../../../../../Release/subversion/libsvn_delta/libsvn_delta-1.lib 
../../../../../Release/subversion/libsvn_ra_dav/libsvn_ra_dav-1.lib 
../../../../../Release/subversion/libsvn_ra_svn/libsvn_ra_svn-1.lib 
../../../../../Release/subversion/libsvn_ra_local/libsvn_ra_local-1.lib 
../../../../../Release/subversion/libsvn_ra/libsvn_ra-1.lib 
../../../../../Release/subversion/libsvn_wc/libsvn_wc-1.lib 
../../../../../apr/LibR/apr.lib 
../../../../../apr-iconv/LibR/apriconv.lib 
../../../../../apr-util/LibR/aprutil.lib 
../../../../../Release/subversion/libsvn_subr/libsvn_subr-1.lib 
../../../../../Release/subversion/libsvn_client/libsvn_client-1.lib 
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib 
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib 
/nologo /dll /machine:I386
-# ADD LINK32 "C:\program files\microsoft sdk\lib\shfolder.lib" 
ws2_32.lib Rpcrt4.lib Mswsock.lib 
../../../../../db4-win32\lib\libdb40.lib 
../../../../../Release/subversion/libsvn_fs/libsvn_fs-1.lib 
../../../../../Release/subversion/libsvn_diff/libsvn_diff-1.lib 
../../../../../Release/subversion/libsvn_repos/libsvn_repos-1.lib 
../../../../../Release/subversion/libsvn_delta/libsvn_delta-1.lib 
../../../../../Release/subversion/libsvn_ra_dav/libsvn_ra_dav-1.lib 
../../../../../Release/subversion/libsvn_ra_svn/libsvn_ra_svn-1.lib 
../../../../../Release/subversion/libsvn_ra_local/libsvn_ra_local-1.lib 
../../../../../Release/subversion/libsvn_ra/libsvn_ra-1.lib 
../../../../../Release/subversion/libsvn_wc/libsvn_wc-1.lib 
../../../../../apr/LibR/apr.lib 
../../../../../apr-iconv/LibR/apriconv.lib 
../../../../../apr-util/LibR/aprutil.lib 
../../../../../Release/subversion/libsvn_subr/libsvn_subr-1.lib 
../../../../../Release/subversion/libsvn_client/libsvn_client-1.lib 
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib 
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib 
/nologo /dll /machine:I386
+# ADD LINK32 ../../../../../db4-win32\lib\libdb40.lib 
../../../../../Release/subversion/libsvn_fs/libsvn_fs-1.lib 
../../../../../Release/subversion/libsvn_diff/libsvn_diff-1.lib 
../../../../../Release/subversion/libsvn_repos/libsvn_repos-1.lib 
../../../../../Release/subversion/libsvn_delta/libsvn_delta-1.lib 
../../../../../Release/subversion/libsvn_ra_dav/libsvn_ra_dav-1.lib 
../../../../../Release/subversion/libsvn_ra_svn/libsvn_ra_svn-1.lib 
../../../../../Release/subversion/libsvn_ra_local/libsvn_ra_local-1.lib 
../../../../../Release/subversion/libsvn_ra/libsvn_ra-1.lib 
../../../../../Release/subversion/libsvn_wc/libsvn_wc-1.lib 
../../../../../apr/LibR/apr.lib 
../../../../../apr-iconv/LibR/apriconv.lib 
../../../../../apr-util/LibR/aprutil.lib 
../../../../../Release/subversion/libsvn_subr/libsvn_subr-1.lib 
../../../../../Release/subversion/libsvn_client/libsvn_client-1.lib 
shfolder.lib Rpcrt4.lib Mswsock.lib ws2_32.lib kernel32.lib user32.lib 
gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib 
oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
 # SUBTRACT LINK32 /pdb:none
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=createJar
+PostBuild_Cmds=jar cvf ../javahl.jar -C ../cls org/tigris/subversion/javahl
+# End Special Build Tool
 
 !ELSEIF  "$(CFG)" == "svnjavahl - Win32 Debug DB40"
 
@@ -136,8 +151,13 @@
 # ADD BSC32 /nologo
 LINK32=link.exe
 # ADD BASE LINK32 Rpcrt4.lib Mswsock.lib 
../../../../../db4-win32\lib\libdb41d.lib 
../../../../../Debug/subversion/libsvn_fs/libsvn_fs-1.lib 
../../../../../Debug/subversion/libsvn_repos/libsvn_repos-1.lib 
../../../../../Debug/subversion/libsvn_delta/libsvn_delta-1.lib 
../../../../../Debug/subversion/libsvn_ra_dav/libsvn_ra_dav-1.lib 
../../../../../Debug/subversion/libsvn_ra_svn/libsvn_ra_svn-1.lib 
../../../../../Debug/subversion/libsvn_ra_local/libsvn_ra_local-1.lib 
../../../../../Debug/subversion/libsvn_ra/libsvn_ra-1.lib 
../../../../../Debug/subversion/libsvn_wc/libsvn_wc-1.lib 
../../../../../apr/LibD/apr.lib 
../../../../../apr-iconv/LibD/apriconv.lib 
../../../../../apr-util/LibD/aprutil.lib 
../../../../../Debug/subversion/libsvn_subr/libsvn_subr-1.lib 
../../../../../Debug/subversion/libsvn_diff/libsvn_diff-1.lib 
../../../../../Debug/subversion/libsvn_client/libsvn_client-1.lib 
ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib 
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib 
odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 "C:\program files\microsoft sdk\lib\shfolder.lib" 
Rpcrt4.lib Mswsock.lib ../../../../../db4-win32\lib\libdb40d.lib 
../../../../../Debug/subversion/libsvn_fs/libsvn_fs-1.lib 
../../../../../Debug/subversion/libsvn_repos/libsvn_repos-1.lib 
../../../../../Debug/subversion/libsvn_delta/libsvn_delta-1.lib 
../../../../../Debug/subversion/libsvn_ra_dav/libsvn_ra_dav-1.lib 
../../../../../Debug/subversion/libsvn_ra_svn/libsvn_ra_svn-1.lib 
../../../../../Debug/subversion/libsvn_ra_local/libsvn_ra_local-1.lib 
../../../../../Debug/subversion/libsvn_ra/libsvn_ra-1.lib 
../../../../../Debug/subversion/libsvn_wc/libsvn_wc-1.lib 
../../../../../apr/LibD/apr.lib 
../../../../../apr-iconv/LibD/apriconv.lib 
../../../../../apr-util/LibD/aprutil.lib 
../../../../../Debug/subversion/libsvn_subr/libsvn_subr-1.lib 
../../../../../Debug/subversion/libsvn_diff/libsvn_diff-1.lib 
../../../../../Debug/subversion/libsvn_client/libsvn_client-1.lib 
ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib 
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib 
odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 ../../../../../db4-win32\lib\libdb40d.lib 
../../../../../Debug/subversion/libsvn_fs/libsvn_fs-1.lib 
../../../../../Debug/subversion/libsvn_repos/libsvn_repos-1.lib 
../../../../../Debug/subversion/libsvn_delta/libsvn_delta-1.lib 
../../../../../Debug/subversion/libsvn_ra_dav/libsvn_ra_dav-1.lib 
../../../../../Debug/subversion/libsvn_ra_svn/libsvn_ra_svn-1.lib 
../../../../../Debug/subversion/libsvn_ra_local/libsvn_ra_local-1.lib 
../../../../../Debug/subversion/libsvn_ra/libsvn_ra-1.lib 
../../../../../Debug/subversion/libsvn_wc/libsvn_wc-1.lib 
../../../../../apr/LibD/apr.lib 
../../../../../apr-iconv/LibD/apriconv.lib 
../../../../../apr-util/LibD/aprutil.lib 
../../../../../Debug/subversion/libsvn_subr/libsvn_subr-1.lib 
../../../../../Debug/subversion/libsvn_diff/libsvn_diff-1.lib 
../../../../../Debug/subversion/libsvn_client/libsvn_client-1.lib 
shfolder.lib Rpcrt4.lib Mswsock.lib ws2_32.lib kernel32.lib user32.lib 
gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib 
oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug 
/machine:I386 /pdbtype:sept
 # SUBTRACT LINK32 /pdb:none
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=createJar
+PostBuild_Cmds=jar cvf javahl.jar -C ../cls .
+# End Special Build Tool
 
 !ENDIF
 
Index: native/org_tigris_subversion_javahl_SVNClient.cpp
===================================================================
--- native/org_tigris_subversion_javahl_SVNClient.cpp    (revision 6771)
+++ native/org_tigris_subversion_javahl_SVNClient.cpp    (working copy)
@@ -332,7 +332,7 @@
  * Signature: (Ljava/lang/String;Ljava/lang/String;Z)V
  */
 JNIEXPORT void JNICALL Java_org_tigris_subversion_javahl_SVNClient_remove
-  (JNIEnv *env, jobject jthis, jstring jpath, jstring jmessage, 
jboolean jforce)
+  (JNIEnv* env, jobject jthis, jobjectArray jtargets, jstring jmessage, 
jboolean jforce)
 {
     JNIEntry(SVNClient, remove);
     SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -341,17 +341,13 @@
         JNIUtil::throwError("bad c++ this");
         return;
     }
-    JNIStringHolder path(jpath);
-    if(JNIUtil::isExceptionThrown())
-    {
-        return;
-    }
+    Targets targets(jtargets);
     JNIStringHolder message(jmessage);
     if(JNIUtil::isExceptionThrown())
     {
         return;
     }
-    cl->remove(path, message, jforce ? true : false);
+    cl->remove(targets, message, jforce ? true : false);
 }
 
 /*
@@ -534,7 +530,7 @@
  * Signature: (Ljava/lang/String;Ljava/lang/String;)V
  */
 JNIEXPORT void JNICALL Java_org_tigris_subversion_javahl_SVNClient_mkdir
-  (JNIEnv* env, jobject jthis, jstring jpath, jstring jmessage)
+  (JNIEnv* env, jobject jthis, jobjectArray jtargets, jstring jmessage)
 {
     JNIEntry(SVNClient, mkdir);
     SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -543,17 +539,13 @@
         JNIUtil::throwError("bad c++ this");
         return;
     }
-    JNIStringHolder path(jpath);
-    if(JNIUtil::isExceptionThrown())
-    {
-        return;
-    }
+    Targets targets(jtargets);
     JNIStringHolder message(jmessage);
     if(JNIUtil::isExceptionThrown())
     {
         return;
     }
-    cl->mkdir(path, message);
+    cl->mkdir(targets, message);
 }
 
 /*
@@ -608,7 +600,7 @@
  * Signature: 
(Ljava/lang/String;Ljava/lang/String;Lorg/tigris/subversion/javahl/Revision;)V
  */
 JNIEXPORT void JNICALL Java_org_tigris_subversion_javahl_SVNClient_doExport
-  (JNIEnv* env, jobject jthis, jstring jsrcPath, jstring jdestPath, 
jobject jrevision)
+  (JNIEnv* env, jobject jthis, jstring jsrcPath, jstring jdestPath, 
jobject jrevision,jboolean jforce)
 {
     JNIEntry(SVNClient, doExport);
     SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -632,7 +624,7 @@
     {
         return;
     }
-    cl->doExport(srcPath, destPath, revision);
+    cl->doExport(srcPath, destPath, revision, jforce ? true : false);
 }
 
 /*
@@ -674,7 +666,7 @@
  * Signature: 
(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
  */
 JNIEXPORT void JNICALL Java_org_tigris_subversion_javahl_SVNClient_doImport
-  (JNIEnv* env, jobject jthis, jstring jpath, jstring jurl, jstring 
jnewEntry, jstring jmessage, jboolean jrecurse)
+  (JNIEnv* env, jobject jthis, jstring jpath, jstring jurl, jstring 
jmessage, jboolean jrecurse)
 {
     JNIEntry(SVNClient, doImport);
     SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -693,17 +685,12 @@
     {
         return;
     }
-    JNIStringHolder newEntry(jnewEntry);
-    if(JNIUtil::isExceptionThrown())
-    {
-        return;
-    }
     JNIStringHolder message(jmessage);
     if(JNIUtil::isExceptionThrown())
     {
         return;
     }
-    cl->doImport(path, url, newEntry, message, jrecurse ? true : false);
+    cl->doImport(path, url, message, jrecurse ? true : false);
 }
 
 /*
@@ -899,6 +886,7 @@
     cl->propertyCreate(path, name, value, jrecurse ? true:false);
 }
 
+
 /*
  * Class:     org_tigris_subversion_javahl_SVNClient
  * Method:    propertyCreate
@@ -965,6 +953,34 @@
 }
   /*
  * Class:     org_tigris_subversion_javahl_SVNClient
+ * Method:    propertyGet
+ * Signature: 
(Ljava/lang/String;Ljava/lang/String;)Lorg/tigris/subversion/javahl/PropertyData;
+ */
+JNIEXPORT jobject JNICALL 
Java_org_tigris_subversion_javahl_SVNClient_propertyGet
+  (JNIEnv *env, jobject jthis, jstring jpath, jstring jname)
+{
+    JNIEntry(SVNClient, propertyGet);
+    SVNClient *cl = SVNClient::getCppObject(jthis);
+    if(cl == NULL)
+    {
+        JNIUtil::throwError("bad c++ this");
+        return NULL;
+    }
+    JNIStringHolder path(jpath);
+    if(JNIUtil::isExceptionThrown())
+    {
+        return NULL;
+    }
+    JNIStringHolder name(jname);
+    if(JNIUtil::isExceptionThrown())
+    {
+        return NULL;
+    }
+    return cl->propertyGet(jthis, path, name);
+}
+
+  /*
+ * Class:     org_tigris_subversion_javahl_SVNClient
  * Method:    fileContent
  * Signature: (Ljava/lang/String;Lorg/tigris/subversion/javahl/Revision;)[B
  */
Index: native/SVNClient.h
===================================================================
--- native/SVNClient.h    (revision 6771)
+++ native/SVNClient.h    (working copy)
@@ -38,8 +38,6 @@
 class SVNClient
 {
 public:
-    jobject revProperty(jobject jthis, const char *path, const char 
*name, Revision &rev);
-    jobjectArray list(const char *url, Revision &revision, bool force);
     jbyteArray fileContent(const char *path, Revision &revision);
     void propertyCreate(const char *path, const char *name, 
JNIByteArray &value, bool recurse);
     void propertyCreate(const char *path, const char *name, const char 
*value, bool recurse);
@@ -48,19 +46,19 @@
     void propertySet(const char *path, const char *name, const char 
*value, bool recurse);
     jobjectArray properties(jobject jthis, const char *path);
     void merge(const char *path1, Revision &revision1, const char 
*path2, Revision &revision2,const char *localPath, bool force, bool 
recurse);
-    void doImport(const char *path, const char *url, const char 
*newEntry, const char *message, bool recurse);
+    void doImport(const char *path, const char *url, const char 
*message, bool recurse);
     void doSwitch(const char *path, const char *url, Revision 
&revision, bool recurse);
-    void doExport(const char *srcPath, const char *destPath, Revision 
&revision);
+    void doExport(const char *srcPath, const char *destPath, Revision 
&revision, bool force);
     void resolved(const char *path, bool recurse);
     void cleanup(const char *path);
-    void mkdir(const char *path, const char *message);
+    void mkdir(Targets &targets, const char *message);
     void move(const char *srcPath, const char *destPath, const char 
*message, Revision &revision, bool force);
     void copy(const char *srcPath, const char *destPath, const char 
*message, Revision &revision);
     jlong commit(Targets &targets, const char *message, bool recurse);
     void update(const char *path, Revision &revision, bool recurse);
     void add(const char *path, bool recurse);
     void revert(const char *path, bool recurse);
-    void remove(const char *path, const char *message, bool force);
+    void remove(Targets &targets, const char *message,bool force);
     void notification(Notify *notify);
     void checkout(const char *moduleName, const char *destPath, 
Revision &revision, bool recurse);
     jobjectArray logMessages(const char *path, Revision &revisionStart, 
Revision &revisionEnd);
@@ -69,6 +67,9 @@
     void username(const char *username);
     jobject singleStatus(const char *path, bool onServer);
     jobjectArray status(const char *path, bool descend, bool onServer);
+    jobjectArray list(const char *url, Revision &revision, bool recurse);
+    jobject revProperty(jobject jthis, const char *path, const char 
*name, Revision &rev);
+    jobject propertyGet(jobject jthis, const char *path, const char *name);
     const char * getLastPath();
     void finalize();
     void dispose(jobject jthis);
Index: native/JNIUtil.cpp
===================================================================
--- native/JNIUtil.cpp    (revision 6771)
+++ native/JNIUtil.cpp    (working copy)
@@ -100,11 +100,11 @@
     /* Create our top-level pool. */
     g_pool = svn_pool_create (NULL);
 
-    svn_error *err = svn_config_ensure (g_pool);
+    svn_error *err = svn_config_ensure (NULL, g_pool); // we use the 
default directory for config files
     if (err)
     {
         svn_pool_destroy (g_pool);
-        handleSVNError(err, 0);
+        handleSVNError(err);
         return false;
     }
 
@@ -159,14 +159,14 @@
     env->DeleteLocalRef(clazz);
 }
 
-void JNIUtil::handleSVNError(svn_error *err, const char *message)
+void JNIUtil::handleSVNError(svn_error *err)
 {
     JNIEnv *env = getEnv();
     jclass clazz = env->FindClass(JAVA_PACKAGE"/ClientException");
     if(getLogLevel() >= exceptionLog)
     {
         JNICriticalSection cs(*g_logMutex);
-        g_logStream << "Error SVN exception thrown message:<" << 
(message ? message : "#")<< "> description:<";
+        g_logStream << "Error SVN exception thrown message:<";
         g_logStream << err->message << "> file:<" << err->file << "> 
apr-err:<" << err->apr_err;
         g_logStream    << ">" << std::endl;
     }
@@ -178,15 +178,10 @@
     std::string buffer;
     assembleErrorMessage(err, 0, APR_SUCCESS, buffer);
     jstring jmessage = makeJString(buffer.c_str());
-    jstring jdescription = NULL;
     if(isJavaExceptionThrown())
     {
         return;
     }
-    if(message)
-    {
-        jdescription = makeJString(message);
-    }
     if(isJavaExceptionThrown())
     {
         return;
@@ -196,12 +191,12 @@
     {
         return;
     }
-    jmethodID mid = env->GetMethodID(clazz, "<init>", 
"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V");
+    jmethodID mid = env->GetMethodID(clazz, "<init>", 
"(Ljava/lang/String;Ljava/lang/String;I)V");
     if(isJavaExceptionThrown())
     {
         return;
     }
-    jobject error = env->NewObject(clazz, mid, jmessage, jdescription, 
jfile, static_cast<jint>(err->apr_err));
+    jobject error = env->NewObject(clazz, mid, jmessage, jfile, 
static_cast<jint>(err->apr_err));
     if(isJavaExceptionThrown())
     {
         return;
@@ -216,11 +211,6 @@
     {
         return;
     }
-    env->DeleteLocalRef(jdescription);
-    if(isJavaExceptionThrown())
-    {
-        return;
-    }
     env->DeleteLocalRef(jfile);
     if(isJavaExceptionThrown())
     {
Index: src/org/tigris/subversion/javahl/DirEntry.java
===================================================================
--- src/org/tigris/subversion/javahl/DirEntry.java    (revision 6771)
+++ src/org/tigris/subversion/javahl/DirEntry.java    (working copy)
@@ -66,9 +66,9 @@
     /**
      * @return revision
      */
-    public long getLastChangedRevision()
+    public Revision.Number getLastChangedRevision()
     {
-        return lastChangedRevision;
+        return new Revision.Number(lastChangedRevision);
     }
 
     public boolean getHasProps()
Index: src/org/tigris/subversion/javahl/Status.java
===================================================================
--- src/org/tigris/subversion/javahl/Status.java    (revision 6771)
+++ src/org/tigris/subversion/javahl/Status.java    (working copy)
@@ -16,191 +16,241 @@
  * @endcopyright
  */
 package org.tigris.subversion.javahl;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Date;
 
 
-
 /**
  * Subversion status API.
+ * @author Patrick Mayweg
+ * @author Cédric Chabanois
+ *         <a 
href="mailto:cchabanois@ifrance.com">cchabanois@ifrance.com</a>
  */
 public class Status
 {
-    Status(String p, boolean id, long r, long lc, String lca, int tt, 
int pt, boolean iv,
-                   boolean il, boolean ic, int rtt, int rpt, String 
coo, String con, String cow, String ur, String urcf, long recf)
+    private String url;              // url in repository    
+    private String path;
+    private int nodeKind;                // node kind (file, dir, ...)
+    private long revision;           // base revision
+    private long lastChangedRevision;// last revision this was changed
+    private long lastChangedDate;    // last date this was changed
+    private String lastCommitAuthor; // last commit author of this item
+    private int textStatus;
+    private int propStatus;
+    private boolean locked;
+    private boolean copied;          // in a copied state
+    private int repositoryTextStatus;
+    private int repositoryPropStatus;
+    private String conflictNew;      // new version of conflicted file
+    private String conflictOld;      // old version of conflicted file
+    private String conflictWorking;  // working version of conflicted file
+
+
+    
+    public Status(String path, String url, int nodeKind, long revision,
+        long lastChangedRevision, long lastChangedDate, String 
lastCommitAuthor,
+        int textStatus, int propStatus,
+        int repositoryTextStatus, int repositoryPropStatus,
+        boolean locked, boolean copied,
+        String conflictOld, String conflictNew, String conflictWorking)
     {
-        pa = p;
-        idi = id;
-        re = r;
-        lch = lc;
-        lcoa = lca;
-        tty = tt;
-        pty = pt;
-        ive = iv;
-        ilo = il;
-        ico = ic;
-        rtty = rtt;
-        rpty = rpt;
-        co = coo;
-        cn = con;
-        cw = cow;
-        u = ur;
-        ucf = urcf;
-        rcf = recf;
+        this.path = path;
+        this.url = url;
+        this.nodeKind = nodeKind;
+        this.revision = revision;
+        this.lastChangedRevision = lastChangedRevision;
+        this.lastChangedDate = lastChangedDate;
+        this.lastCommitAuthor = lastCommitAuthor;
+        this.textStatus = textStatus;
+        this.propStatus = propStatus;
+        this.locked = locked;
+        this.copied = copied;
+        this.repositoryTextStatus = repositoryTextStatus;
+        this.repositoryPropStatus = repositoryPropStatus;
+        this.conflictOld = conflictOld;
+        this.conflictNew = conflictNew;
+        this.conflictWorking = conflictWorking;
     }
-    private String pa;
-    private boolean idi;
-    private long re;
-    private long lch;
-    private String lcoa;
-    private int tty;
-    private int pty;
-    private boolean ive;
-    private boolean ilo;
-    private boolean ico;
-    private int rtty;
-    private int rpty;
-    private String cn;
-    private String co;
-    private String cw;
-    private String u;
-    private String ucf;
-    private long rcf;
+
     /**
      * @return path of status entry
      */
-    public String path()
+    public String getPath()
     {
-        return pa;
+        return path;
     }
+
     /**
-     * @return true if entry is a dir
-     */
-    public boolean isDir()
-    {
-        return idi;
-    }
-    /**
      * @return revision if versioned, otherwise SVN_INVALID_REVNUM
      */
-    public long revision()
+    public Revision.Number getRevision()
     {
-        return re;
+        return new Revision.Number(revision);
     }
     /**
-     * Returns the last time the file was changed revision number.
+     * @return the last time the file was changed revision number.
+     * or null if not available
      */
-    public long lastChanged()
+    public Date getLastChangedDate()
     {
-        return lch;
+        if (lastChangedDate == 0)
+            return null;
+        else
+            return new Date(lastChangedDate/1000);
     }
     /**
      * @return name of author if versioned, NULL otherwise
      */
-    public String lastCommitAuthor()
+    public String getLastCommitAuthor()
     {
-        return lcoa;
+        return lastCommitAuthor;
     }
+
     /**
-     * @return file status of the "textual" component.
+     * @return file status property enum of the "textual" component.
      */
-    public String textDescription()
+    public int getTextStatus()
     {
-        return Kind.getDescription(tty);
+        return textStatus;
     }
+
     /**
-     * @return file status property enum of the "textual" component.
+     * @return file status property enum of the "property" component.
      */
-    public int textType()
+    public int getPropStatus()
     {
-        return tty;
+        return propStatus;
     }
+
     /**
-     * @return textual file status of the "property" component.
+     * @return file status property enum of the "textual" component im 
the repository.
      */
-    public String propDescription()
+    public int getRepositoryTextStatus()
     {
-        return Kind.getDescription(pty);
+        return repositoryTextStatus;
     }
+
     /**
-     * @return file status property enum of the "property" component.
+     * @return file status property enum of the "property" component im 
the repository.
      */
-    public int propType()
+    public int getRepositoryPropStatus()
     {
-        return pty;
+        return repositoryPropStatus;
     }
+
     /**
-     * @return file status of the "textual" component im the repository.
+     * @return true if locked
      */
-    public String repositoryTextDescription()
+     public boolean isLocked()
     {
-        return Kind.getDescription(rtty);
+        return locked;
     }
     /**
-     * @return file status property enum of the "textual" component im 
the repository.
+     * @return true if copied
      */
-    public int repositoryTextType()
+    public boolean isCopied()
     {
-        return rtty;
+        return copied;
     }
+    public String getConflictNew()
+    {
+        return conflictNew;
+    }
+    public String getConflictOld()
+    {
+        return conflictOld;
+    }
+    public String getConflictWorking()
+    {
+        return conflictWorking;
+    }
+
     /**
-     * @return textual file status of the "property" component im the 
repository.
+     * @return url in repository or null if not known
      */
-    public String repositoryPropDescription()
+    public URL getUrl() {
+        if (url == null)
+            return null;
+        else
     {
-        return Kind.getDescription(rpty);
+            try {
+                return new URL(url);
+            } catch (MalformedURLException e)
+            {
+                return null;
+            }
     }
+    }
+
+
     /**
-     * @return file status property enum of the "property" component im 
the repository.
+     * @return last changed revision
      */
-    public int repositoryPropType()
-    {
-        return rpty;
+    public Revision.Number getLastChangedRevision() {
+        return new Revision.Number(lastChangedRevision);
     }
+
     /**
-     * @return true if under version control
+     * @return the node kind
      */
-    public boolean isVersioned()
-    {
-        return ive;
+    public int getNodeKind() {
+        return nodeKind;
     }
+
     /**
-     * @return true if locked
+     * tells if is managed by svn (added, normal, modified ...)
+     * @return
      */
-     public boolean isLocked()
-    {
-        return ilo;
+    public boolean isManaged()  {
+        int textStatus = getTextStatus();
+        return ((textStatus != Status.Kind.unversioned) &&
+                (textStatus != Status.Kind.none) &&
+                (textStatus != Status.Kind.ignored));
     }
+    
     /**
-     * @return true if copied
+     * tells if the resource has a remote counter-part
+     * @return
      */
-    public boolean isCopied()
-    {
-        return ico;
+    public boolean hasRemote() {
+        int textStatus = getTextStatus();
+        return ((isManaged()) && (textStatus != Status.Kind.added));
     }
-    public String conflictNew()
-    {
-        return cn;
+    
+    public boolean isAdded() {
+        int textStatus = getTextStatus();
+        return textStatus == Status.Kind.added;
     }
-    public String conflictOld()
-    {
-        return co;
+
+    public boolean isDeleted() {
+        int textStatus = getTextStatus();
+        return textStatus == Status.Kind.deleted;        
     }
-    public String conflictWorking()
-    {
-        return cw;
+
+    public boolean isMerged() {
+        int textStatus = getTextStatus();
+        return textStatus == Status.Kind.merged;        
     }
-    public String url()
-    {
-        return u;
+
+    public boolean isIgnored() {
+        int textStatus = getTextStatus();
+        return textStatus == Status.Kind.ignored;        
     }
-    public String urlCopiedFrom()
-    {
-        return ucf;
+    
+
+
+    /**
+     * tells if it is modified
+     * @return
+     */
+    public boolean isModified() {
+        int textStatus = getTextStatus();
+        return textStatus == Status.Kind.modified;
     }
-    public long revisionCopiedFrom()
-    {
-        return rcf;
-    }
 
+
+
     public static final class Kind
     {
         /** does not exist */
@@ -236,6 +286,12 @@
         /** an unversioned resource is in the way of the versioned 
resource */
         public static final int obstructed = 10;
 
+        /** a resource marked as ignored */
+        public static final int ignored = 11;
+        
+        /** a directory doesn't contain a complete entries list  */
+        public static final int incomplete = 12;
+
         public static final String getDescription(int kind)
         {
             switch (kind)
@@ -258,10 +314,17 @@
               return "merged";
             case conflicted:
               return "conflicted";
+            case ignored:
+              return "ignored";
+            case incomplete:
+              return "incomplete";
             case unversioned:
             default:
               return "unversioned";
             }
         }
     }
+
+
 }
+
Index: src/org/tigris/subversion/javahl/SVNClient.java
===================================================================
--- src/org/tigris/subversion/javahl/SVNClient.java    (revision 6771)
+++ src/org/tigris/subversion/javahl/SVNClient.java    (working copy)
@@ -59,22 +59,24 @@
       */
      public native String getLastPath();
     /**
+     * List directory entries of a URL.
      *
+     * @param path Path to explore.
+     * @param descend Recurse into subdirectories if existant.
+     * @return Array of Status entries.
+     */
+    public native Status[]status(String path, boolean descend, boolean 
onServer) throws ClientException;
+
+    /**
+     *
      * @param url
      * @param revision
      * @param recurse
      * @return
      */
     public native DirEntry[]list(String url, Revision revision, boolean 
recurse) throws ClientException;
+
     /**
-     * Enumerates all files/dirs at a given path.
-     *
-     * @param path Path to explore.
-     * @param descend Recurse into subdirectories if existant.
-     * @return Array of Status entries.
-     */
-    public native Status[]status(String path, boolean descend, boolean 
onServer) throws ClientException;
-    /**
      * Returns the status of a single file in the path.
      *
      * @param path File to gather status.
@@ -127,7 +129,7 @@
       * Sets a file for deletion.
       * @exception ClientException
       */
-    public native void remove(String path, String message, boolean 
force)throws ClientException;
+    public native void remove(String[] path, String message, boolean 
force)throws ClientException;
     /**
       * Reverts a file to a pristine state.
       * @exception ClientException
@@ -168,7 +170,7 @@
      * Moves or renames a file.
      * @exception ClientException
      */
-    public native void move(String srcPath, String destPath, String 
Message, Revision revision, boolean force) throws ClientException;
+    public native void move(String srcPath, String destPath, String 
message, Revision revision, boolean force) throws ClientException;
     /**
      * Creates a directory directly in a repository or creates a
      * directory on disk and schedules it for addition. If <i>path</i>
@@ -176,7 +178,7 @@
      * @param message log message.
      * @exception ClientException
      */
-    public native void mkdir(String path, String message) throws 
ClientException;
+    public native void mkdir(String[] path, String message) throws 
ClientException;
     /**
      * Recursively cleans up a local directory, finishing any
      * incomplete operations, removing lockfiles, etc.
@@ -196,7 +198,7 @@
      * @exception ClientException
      * @param destPath a destination path that must not already exist.
      */
-    public native void doExport(String srcPath, String destPath, 
Revision revision) throws ClientException;
+    public native void doExport(String srcPath, String destPath, 
Revision revision,boolean force) throws ClientException;
     /**
      * Update local copy to mirror a new url. This excapsulates the
      * svn_client_switch() client method.
@@ -207,11 +209,9 @@
      * Import file or directory PATH into repository directory URL at
      * head.  This usually requires authentication, see Auth.
      * @param message log message.
-     * @param newEntry new directory in which the contents of 
<i>path</i> are
-     *        imported.
      * @exception ClientException
      */
-    public native void doImport(String path, String url, String 
newEntry, String message, boolean recurse) throws ClientException;
+    public native void doImport(String path, String url, String 
message, boolean recurse) throws ClientException;
     /**
      * Merge changes from two paths into a new local path.
      * @exception ClientException
@@ -228,6 +228,12 @@
     public native void propertyCreate(String path, String name, byte[] 
value, boolean recurse) throws ClientException;
     public native PropertyData revProperty(String path, String name, 
Revision rev) throws ClientException;
 
+    /**
+     * get the given property
+     */
+    public native PropertyData propertyGet(String path, String name) 
throws ClientException;
+
+
     public native byte[] fileContent(String path, Revision revision) 
throws ClientException;
     public static native void enableLogging(int logLevel, String 
logFilePath);
     public static native String version();
Index: src/org/tigris/subversion/javahl/LogMessage.java
===================================================================
--- src/org/tigris/subversion/javahl/LogMessage.java    (revision 6771)
+++ src/org/tigris/subversion/javahl/LogMessage.java    (working copy)
@@ -43,9 +43,9 @@
         return date;
     }
 
-    public long getRevision()
+    public Revision.Number getRevision()
     {
-        return revision;
+        return new Revision.Number(revision);
     }
 
     public String getAuthor()
Index: src/org/tigris/subversion/javahl/ClientException.java
===================================================================
--- src/org/tigris/subversion/javahl/ClientException.java    (revision 6771)
+++ src/org/tigris/subversion/javahl/ClientException.java    (working copy)
@@ -25,49 +25,42 @@
 {
     /**
      * The constructor is only used by the native library.
-     * @param m message
-     * @param d description
-     * @param s source
-     * @param a APR error code
+     * @param message message
+     * @param source source
+     * @param aprError APR error code
      */
-    ClientException(String m, String d, String s, int a)
+    ClientException(String message, String source, int aprError)
     {
-        super(m);
-        de = d;
-        so = s;
-        ap = a;
+        super(message);
+        this.source = source;
+        this.aprError = aprError;
     }
     /**
-     * the error message
+     * the exception message
      */
-    private String de;
+    private String message;
+
     /**
      * the error source
      */
-    private String so;
+    private String source;
     /**
      * the APR error id
      */
-    private int ap;
+    private int aprError;
+
     /**
-     * Returns the error message.
-     */
-    public String getDescription()
-    {
-        return de;
-    }
-    /**
      * Returns the error source.
      */
     public String getSource()
     {
-        return so;
+        return source;
     }
     /**
      * Returns the APR error id.
      */
     public int getAprError()
     {
-        return ap;
+        return aprError;
     }
 }
Index: src/org/tigris/subversion/javahl/Revision.java
===================================================================
--- src/org/tigris/subversion/javahl/Revision.java    (revision 6771)
+++ src/org/tigris/subversion/javahl/Revision.java    (working copy)
@@ -17,7 +17,9 @@
  */
 package org.tigris.subversion.javahl;
 
+import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.Locale;
 
 /**
  * Class to specify a revision in a svn command.
@@ -38,29 +40,29 @@
 
     public String toString()
     {
-        switch (revKind)
-        {
-        case Kind.unspecified:
-            return "start revision";
-        case Kind.committed:
-            return "last commited revision";
-        case Kind.previous:
-            return "previous commited revision";
-        case Kind.base:
-            return "base of working revision";
-        case Kind.working:
-            return "working revision";
-        case Kind.head:
-            return "head revision";
-        default:
-            return "bad revision";
+        switch(revKind) {
+            case Kind.base : return "BASE";
+            case Kind.committed : return "COMMITTED";
+            case Kind.head : return "HEAD";
+            case Kind.previous : return "PREV";
+            case Kind.working : return "WORKING";
         }
+        return super.toString();
     }
 
+    public boolean equals(Object target) {
+        if (this == target)
+            return true;
+        if (!(target instanceof Revision))
+            return false;
+
+        return ((Revision)target).revKind == revKind;        
+    }
+
     public static final Revision HEAD = new Revision(Kind.head);
     public static final Revision START = new Revision(Kind.unspecified);
     public static final Revision COMMITTED = new Revision(Kind.committed);
-    public static final Revision PREVISIOUS = new Revision(Kind.previous);
+    public static final Revision PREVIOUS = new Revision(Kind.previous);
     public static final Revision BASE = new Revision(Kind.base);
     public static final Revision WORKING = new Revision(Kind.working);
     public static final int SVN_INVALID_REVNUM = -1;
@@ -80,31 +82,44 @@
             return revNumber;
         }
 
-        public String toString()
-        {
-            return "Revision number " + revNumber;
+        public String toString() {
+            return Long.toString(revNumber);
         }
+        
+        public boolean equals(Object target) {
+            if (!super.equals(target))
+                return false;
+
+            return ((Revision.Number)target).revNumber == 
revNumber;        
+        }
     }
 
     public static class DateSpec extends Revision
     {
         protected Date revDate;
-
         public DateSpec(Date date)
         {
             super(Kind.date);
             revDate = date;
         }
-
         public Date getDate()
         {
             return revDate;
         }
 
-        public String toString()
-        {
-            return "Revision date " + revDate.toString();
+        public String toString() {
+            
+            SimpleDateFormat dateFormat = new SimpleDateFormat("EEE, d 
MMM yyyy HH:mm:ss Z", Locale.US);
+            return '{'+dateFormat.format(revDate)+'}';
         }
+
+        public boolean equals(Object target) {
+            if (!super.equals(target))
+                return false;
+
+            return 
((Revision.DateSpec)target).revDate.equals(revDate);        
+        }
+        
     }
 
     /** Various ways of specifying revisions.


_____________________________________________________________________
Envie de discuter en "live" avec vos amis ? Télécharger MSN Messenger
http://www.ifrance.com/_reloc/m la 1ère messagerie instantanée de France


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] javahl

Posted by Sander Roobol <ph...@wanadoo.nl>.
On Mon, Aug 18, 2003 at 07:20:32PM +0100, C?dric Chabanois wrote:
> Ok thanks for your comment
> 
> I have attached the patch file this time

I've filed this patch as issue #1501:
  http://subversion.tigris.org/issues/show_bug.cgi?id=1501

Sander

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] javahl

Posted by pa...@qint.de.
Hi Michael,
I think it is your mailer, because I have received the patch both times with 
the blank.
Regards,
Patrick

Quoting Michael Wood <mw...@its.uct.ac.za>:

> On Mon, Aug 18, 2003 at 07:20:32PM +0100, Cédric Chabanois wrote:
> > Ok thanks for your comment
> 
> No problem.
> 
> > I have attached the patch file this time
> [snip]
> > >This patch is broken.  It's missing some spaces at the start of the
> > >lines.  It should look more like this:
> > >
> > >Index: native/SVNClient.cpp
> > >===================================================================
> > >--- native/SVNClient.cpp    (revision 6771)
> > >+++ native/SVNClient.cpp    (working copy)
> > >@@ -35,6 +35,7 @@
> > >#include <svn_path.h>
> > >#include "org_tigris_subversion_javahl_Status_Kind.h"
> > >#include "org_tigris_subversion_javahl_Revision.h"
> > >+#include "org_tigris_subversion_javahl_NodeKind.h"
> > >#include <vector>
> > >#include <iostream>
> > >[...]
> [snip]
> 
> hehe.  I see you broke my reply too ;)
> 
> -- 
> Michael Wood <mw...@its.uct.ac.za>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
> For additional commands, e-mail: dev-help@subversion.tigris.org
> 
> 




---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] javahl

Posted by Michael Wood <mw...@its.uct.ac.za>.
On Mon, Aug 18, 2003 at 07:20:32PM +0100, Cédric Chabanois wrote:
> Ok thanks for your comment

No problem.

> I have attached the patch file this time
[snip]
> >This patch is broken.  It's missing some spaces at the start of the
> >lines.  It should look more like this:
> >
> >Index: native/SVNClient.cpp
> >===================================================================
> >--- native/SVNClient.cpp    (revision 6771)
> >+++ native/SVNClient.cpp    (working copy)
> >@@ -35,6 +35,7 @@
> >#include <svn_path.h>
> >#include "org_tigris_subversion_javahl_Status_Kind.h"
> >#include "org_tigris_subversion_javahl_Revision.h"
> >+#include "org_tigris_subversion_javahl_NodeKind.h"
> >#include <vector>
> >#include <iostream>
> >[...]
[snip]

hehe.  I see you broke my reply too ;)

-- 
Michael Wood <mw...@its.uct.ac.za>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] javahl

Posted by Cédric Chabanois <cc...@ifrance.com>.
Ok thanks for your comment

I have attached the patch file this time

Cédric

>On Sun, Aug 17, 2003 at 10:33:43PM +0100, Cédric Chabanois wrote:
>[snip]
>  
>
>>Index: native/SVNClient.cpp
>>===================================================================
>>--- native/SVNClient.cpp    (revision 6771)
>>+++ native/SVNClient.cpp    (working copy)
>>@@ -35,6 +35,7 @@
>>#include <svn_path.h>
>>#include "org_tigris_subversion_javahl_Status_Kind.h"
>>#include "org_tigris_subversion_javahl_Revision.h"
>>+#include "org_tigris_subversion_javahl_NodeKind.h"
>>#include <vector>
>>#include <iostream>
>>    
>>
>[snip]
>
>This patch is broken.  It's missing some spaces at the start of the
>lines.  It should look more like this:
>
>Index: native/SVNClient.cpp
>===================================================================
>--- native/SVNClient.cpp    (revision 6771)
>+++ native/SVNClient.cpp    (working copy)
>@@ -35,6 +35,7 @@
> #include <svn_path.h>
> #include "org_tigris_subversion_javahl_Status_Kind.h"
> #include "org_tigris_subversion_javahl_Revision.h"
>+#include "org_tigris_subversion_javahl_NodeKind.h"
> #include <vector>
> #include <iostream>
>[...]
>
>  
>


Re: [PATCH] javahl

Posted by Michael Wood <mw...@its.uct.ac.za>.
On Sun, Aug 17, 2003 at 10:33:43PM +0100, Cédric Chabanois wrote:
[snip]
> Index: native/SVNClient.cpp
> ===================================================================
> --- native/SVNClient.cpp    (revision 6771)
> +++ native/SVNClient.cpp    (working copy)
> @@ -35,6 +35,7 @@
> #include <svn_path.h>
> #include "org_tigris_subversion_javahl_Status_Kind.h"
> #include "org_tigris_subversion_javahl_Revision.h"
> +#include "org_tigris_subversion_javahl_NodeKind.h"
> #include <vector>
> #include <iostream>
[snip]

This patch is broken.  It's missing some spaces at the start of the
lines.  It should look more like this:

Index: native/SVNClient.cpp
===================================================================
--- native/SVNClient.cpp    (revision 6771)
+++ native/SVNClient.cpp    (working copy)
@@ -35,6 +35,7 @@
 #include <svn_path.h>
 #include "org_tigris_subversion_javahl_Status_Kind.h"
 #include "org_tigris_subversion_javahl_Revision.h"
+#include "org_tigris_subversion_javahl_NodeKind.h"
 #include <vector>
 #include <iostream>
[...]

-- 
Michael Wood <mw...@its.uct.ac.za>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org