Currently I'm busy working and have no time to maintenance this project
Wrap Subversion (SVN) to Node Native Addon
Build | Tests | |
---|---|---|
Windows | ||
Linux | ||
macOS |
Name | Introduction | Required by | Note |
---|---|---|---|
node-apr-gen-test-char | A node wrapper for apr's gen-test-char executable | apr | Used to generate a header file (apr_escape_test_char.h ) required by apr |
expat | An XML parser | apr | |
openssl | crypto library | serf | See below |
sqlite-amalgamation | SQLite database | subversion | Unofficial mirror for amalgamation version |
apr | Apache Portable Runtime | subversion | apr-util has been merged into apr-2 |
serf | An HTTP client library | subversion | |
subversion | Subversion library | node-svn | Only static libraries are used |
Note for OpenSSL:
For Node.js, node.lib
exports OpenSSL symbols, so this library can dynamic link to node.lib
to use OpenSSL.
For Electron, io.lib
doesn't export OpenSSL symbols (See this blog post for more information). So this library need to compile OpenSSL by itself.
The source code in dependencies/openssl
folder is taken from nodejs/node repository, with a modified openssl.gyp
to build as static library.
- Patch subversion SQLite initialization to use Serialize mode (see Thread Safety).
- Patch serf to support new version of OpenSSL (with
OPENSSL_NO_DEPRECATED
on)
# Clone
git clone -b build-svn https://github.com/yume-chan/node-svn.git
cd node-svn
# Clone and patch submodules
git submodule update --init
# Build
npm install
# Tests
npm test
It will takes minutes to build (~120s on my i7-7567U 2C4T 4GHz, 8G DDR4 2133MHz, ~250s if openssl included), so sit back and relax yourself while it's doing its own things.
All dependencies will be compiled as static library and be linked into one single dynamic library to avoid any dynamic library searching path problems.
See the type definition
Svn has been designed to only work in single-thread mode. So you need to create new Client
for each concurrency operatons.
Maybe a Client pool can be used to reduce overhead.
I have tried to enable all mutex in SQLite, but svn still crashes with random access violations.
- Add options to all methods
- Strongly-typed error handling
- Async Iterator for methods like
status()
- Authentication
- Cross platform
- You name it
Help wanted! How to create custom Error class in Node.js Native Addon?
Name | License | Note |
---|---|---|
node-apr-gen-test-char | MIT | |
openssl | OpenSSL | Node.js: MIT |
sqlite-amalgamation | BSD-3-clause | SQLite: Public Domain |
apr | Apache 2.0 | |
serf | Apache 2.0 | |
subversion | Apache 2.0 | |
node-svn | MIT |