From b72854a3f5ce3822a88b8422f6232060b09ab50a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albert=20=C5=81=C4=85cki?= Date: Sun, 11 Aug 2013 19:04:07 +0200 Subject: [PATCH 1/3] Added svn add functionality --- binding.gyp | 1 + package.json | 7 ++++--- src/svn.cc | 1 + src/svn_add.cc | 30 ++++++++++++++++++++++++++++++ 4 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 src/svn_add.cc diff --git a/binding.gyp b/binding.gyp index 38368d8..9abb237 100644 --- a/binding.gyp +++ b/binding.gyp @@ -10,6 +10,7 @@ "sources": [ "src/svn.cc", "src/svn_cat.cc", + "src/svn_add.cc", "src/svn_auth.cc", "src/svn_checkout.cc", "src/svn_commit.cc", diff --git a/package.json b/package.json index 2e963d4..632a6ba 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "0.3.0", + "version": "0.3.1", "name": "kubek-nodesvn", "main": "bin/nodesvn.js", "author": { @@ -7,9 +7,10 @@ "email": "enmand@gmail.com" }, "contributors": [ - "Jakub Lekstan " + "Jakub Lekstan ", + "Albert Łącki " ], "engines": { - "node": ">= 0.10.0" + "node": ">= 0.8.0" } } diff --git a/src/svn.cc b/src/svn.cc index adbf470..aba4ff7 100644 --- a/src/svn.cc +++ b/src/svn.cc @@ -43,6 +43,7 @@ void SVN::InitModule(Handle target) ct->InstanceTemplate()->SetInternalFieldCount(1); ct->SetClassName(String::NewSymbol("client")); + NODE_SET_PROTOTYPE_METHOD(ct, "add", __add); NODE_SET_PROTOTYPE_METHOD(ct, "authenticate", __authenticate); NODE_SET_PROTOTYPE_METHOD(ct, "cat", __cat); NODE_SET_PROTOTYPE_METHOD(ct, "checkout", __checkout); diff --git a/src/svn_add.cc b/src/svn_add.cc new file mode 100644 index 0000000..8836dfd --- /dev/null +++ b/src/svn_add.cc @@ -0,0 +1,30 @@ +#include "svn.h" + +Handle SVN::__add (const Arguments &args) { + HandleScope scope; + + //system + SVN *svn = ObjectWrap::Unwrap(args.This()); + apr_pool_t *subpool = svn_pool_create(svn->pool); + svn_error_t *err; + + //svn + const char *path; + + //additional + Local result; + + String::Utf8Value jsPath (args[0]->ToString()); + path = apr_pstrdup(subpool, *jsPath); + + if ( (err = svn_client_add4(path, svn_depth_infinity, 0, 0, 0, svn->ctx, subpool)) ) { + result = Local::New(svn->error(err)); + } else { + result = Object::New(); + result->Set(status_symbol, Integer::New(0)); + } + + POOL_DESTROY + + return scope.Close(result); +} From 03f1967351d0313394250a8c5466c8a38914f939 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albert=20=C5=81=C4=85cki?= Date: Fri, 23 Aug 2013 01:18:18 +0200 Subject: [PATCH 2/3] Added -lmagic for svn add to work --- binding.gyp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/binding.gyp b/binding.gyp index 9abb237..64b5dc7 100644 --- a/binding.gyp +++ b/binding.gyp @@ -45,7 +45,8 @@ "-lexpat", "<(neon_lib)/libneon.a", "-luuid", - "-lz" + "-lz", + "-lmagic" ] }, { From e6bc36eee3a1565b6a51ce652a64cc33da07fc96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albert=20=C5=81=C4=85cki?= Date: Fri, 23 Aug 2013 03:24:44 +0200 Subject: [PATCH 3/3] Needed libmagic dependencies --- build_file.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100755 build_file.sh diff --git a/build_file.sh b/build_file.sh new file mode 100755 index 0000000..71e0ae2 --- /dev/null +++ b/build_file.sh @@ -0,0 +1,10 @@ +#!/bin/bash -x + +BUILDDIR=$(dirname $0) +BUILDDIR="$(readlink -f $BUILDDIR)/build" +FILEDIR="$BUILDDIR/file" + +if [ -n "$FILEDIR/lib/libfile.a" ]; then + mkdir -p $FILEDIR && cd deps/file-5.14 && ./configure --prefix=$FILEDIR && make clean install +fi +