lint-svn
TypeScript icon, indicating that this package has built-in type declarations

1.0.14 • Public • Published

Note

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

Installation

npm install --save-dev lint-svn

Configuration

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

//@ts-check
 
/**
 * @param {string[]} files 
 */
async function checkunversioned(files) {
    const warnings = [];
    for (const file of files) {
        if(path.extname(file) === ".png")
            warnings.push(
                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:

//@ts-check
 
// 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");
if(res.code){
    console.error(res.stderr);
    process.exit(res.code)
}

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

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

Package Sidebar

Install

npm i lint-svn

Weekly Downloads

0

Version

1.0.14

License

ISC

Unpacked Size

16.5 kB

Total Files

10

Last publish

Collaborators

  • foresightyj