Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 1,000,000+ packages pre-installed, including lint-svn with all npm packages installed. Try it out:

var lintSvn = require("lint-svn")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

lint-svn v1.0.14


Svn itself doesn't have a concept of client-side hooks. It only had server side hooks. But it is made possible by TortoiseSVN.


npm install --save-dev lint-svn


Create a config file in your root directory of name: .lintsvnrc.js or lint-svn.config.js, which has the following content


 * @param {string[]} files
async function checkunversioned(files) {
    const warnings = [];
    for (const file of files) {
        if(path.extname(file) === ".png")
                new Warning(`Please remember to add images to svn`, "High"),
    return warnings;

/** @type {LintConfig} */
const lintConfig = {
    ignoreExts:[".dll", ".map"],
    concurrency: 5,
    rules: [
            glob: "src/**/*.(ts|tsx|scss|json)",
            command: ["prettier --write"],
            glob: "src/**/*.(ts|tsx)",
            command: ["eslint --fix"],
            glob: "*",
            //if false, only lint added & modified files
            nonVersioned: true,
            command: checkunversioned,

Then run npx lint-svn to see the effect.

Configure TortoiseSvn Client-Side Hook

First read: Client Side Hook Scripts

You still needed a bootstrap script for TortoiseSVN to call and pass command line args to. For me, I had a script called preCommitHook.js with content like:


// ToritoiseSVN calls your script with these args:
// D:\MyProject\preCommitHook.js, C:\Users\ADMINI~1\AppData\Local\Temp\svnC121.tmp, 3, C:\Users\ADMINI~1\AppData\Local\Temp\svnC122.tmp, D:\Working\MyProject\src\pages\base

const $ = require("shelljs");
const res = $.exec("npm run lint-svn");

Right click the project folder -> TortoiseSVN -> Properties, and add a property:

tsvn:precommithook: node %REPOROOT%/trunk/MyProject/preCommitHook.js


RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free