Giter Site home page Giter Site logo

grunt-push-svn's Introduction

grunt-push-svn

Build Status

Push local directory to a specified SVN server

Getting Started

This plugin requires svn command line and Grunt ~0.4.1.

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-push-svn --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-push-svn');

The "push_svn" task

Overview

In your project's Gruntfile, add a section named push_svn to the data object passed into grunt.initConfig().

grunt.initConfig({
  push_svn: {
    options: {
      remove: false, 
      pushIgnore: ['**/*.tmp'],
      removeIgnore: ['**/*.gif']
    },
    main: {
      src: '/path to your local directory',
      dest: 'https://svn.example.com/path/to/your/repo',
      tmp: './.build'
    },
  },
})

Options

options.username

Default value: undefined

If the target repo need authentication and you don't have the authentication saved, set username and password in Options.

options.password

Type: String

options.remove

Type: Boolean Default value: false

With options.remove enabled, remote file will be removed if it does not exist in local directory.

options.removeIgnore

Type: Array Default value: []

Specify exclude patterns for options.remove

options.pushIgnore

Type: Array Default value: []

Specify exclude patterns for local files.

options.message

Type: String Default value: "committed with grunt-push-svn"

options.trymkdir

Type: Boolean Default value: false

Try to mkdir in remote repo if dest does not exist.

options.svnPath

Type: String Default value: "svn"

Path to svn(optional)

Usage Examples

Deploy code to SAE or BAE

Deployment of SAE or BAE are based on SVN, so grunt-push-svn is just the perfect tool to help you do that.

grunt.initConfig({
  push_svn: {
    options: {},
    src: '/home/dong/projects/sae_bae_project',
    dest: 'https://svn.sinaapp.com/myapp/subfolder',
    tmp: './tmp'
  },
})

Release History

v0.1.0 (2013-06-07)

Initial release

v0.1.1 (2013-06-08)

Fix dependencies

v0.1.2 (2013-06-08)

Force ignore .svn from src

v0.1.3 (2013-06-09)

Check src existence; Print friendly message

v0.1.4 (2013-06-09)

Ignore .svn and .git files

v0.1.5 (2013-06-09)

Fix ignore files on windows

v0.1.6 (2013-07-18)

Update readme

v0.1.7 (2013-08-29)

Add option trymkdir

v0.1.8 (2013-08-30)

Fix checkout bug; travis-ci

v0.1.9 (2013-12-12)

Add authontication support

v0.2.0 (2014-05-20)

Add option svnPath

v0.2.1 (2014-05-23)

Make trymkdir recursive

grunt-push-svn's People

Contributors

ddliu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

grunt-push-svn's Issues

Error: ENOENT, no such file or directory ''

I'm getting the following error when I try to run push_svn. It gets as far as checking out the repository to the .tmp folder but gives the following error when it goes to "push to temp path". It's strange since I'm using it on a different project and there are no issues.

Push to tmp path...

P:\Projects\Secret Location\Samsung\samsung-note\node_modules\grunt-google-cdn\node_modules\bower\node_modules\tmp\lib\tmp.js:261
  throw err;
        ^
Error: ENOENT, no such file or directory ''
    at Object.fs.readdirSync (fs.js:654:18)
    at Object.recurse (P:\Projects\Secret Location\Samsung\samsung-note\node_modules\grunt\lib\grunt\file.js:204:6)
    at P:\Projects\Secret Location\Samsung\samsung-note\node_modules\grunt-push-svn\tasks\push_svn.js:172:20
    at P:\Projects\Secret Location\Samsung\samsung-note\node_modules\grunt-push-svn\node_modules\async\lib\async.js:548:21
    at P:\Projects\Secret Location\Samsung\samsung-note\node_modules\grunt-push-svn\node_modules\async\lib\async.js:224:13
    at iterate (P:\Projects\Secret Location\Samsung\samsung-note\node_modules\grunt-push-svn\node_modules\async\lib\async.js:131:13)
    at P:\Projects\Secret Location\Samsung\samsung-note\node_modules\grunt-push-svn\node_modules\async\lib\async.js:142:25
    at P:\Projects\Secret Location\Samsung\samsung-note\node_modules\grunt-push-svn\node_modules\async\lib\async.js:226:17
    at P:\Projects\Secret Location\Samsung\samsung-note\node_modules\grunt-push-svn\node_modules\async\lib\async.js:553:34
    at ChildProcess.<anonymous> (P:\Projects\Secret Location\Samsung\samsung-note\node_modules\grunt-push-svn\node_modules\svn-spawn\node_modules\easy
-spawn\index.js:85:29)

My grunt task config is as follows (I've omitted the server name):

        push_svn: {
            options: {
                remove: false,
                pushIgnore: [],
                removeIgnore: [],
                message: 'BUILD'
            },
            main: {
               src: '<%= dist %>',
               dest: 'svn://SERVERNAMEOMITTED',
               tmp: '.tmp'
            },
        }

My dist folder definitely has files in it.

i can not use this plugin????

i saw the example,but it always tell me "{ [Error: spawn ENOENT] code: 'ENOENT', errno: 'ENOENT', syscall: 'spawn' }"

my config is:
push_svn:{
options:{
remove:false,
message:"<%=pkg.version%>version uglify"
},
min:{
src:"D:/workspace/webapp_o2o_v1",
dest:"https://tc-svn.tencent.com/paipai/paipai_qgo_rep/qgo_proj/trunk/itg/weigou_domestic/v1.0/webapp_o2o_v1/WebRoot/assets/min/",
tmp:"./tmp"
},
build:{
src:"D:/workspace/webapp_o2o_v1/WebRoot/assets/build",
dest:"https://tc-svn.tencent.com/paipai/paipai_qgo_rep/qgo_proj/trunk/itg/weigou_domestic/v1.0/webapp_o2o_v1/WebRoot/assets/build"

        }
    }

and i debug the code, find that when excute the "svn.getFile", it throw wrong.....

please tell me how i could write it??? thanks

run the test case fails

Running "jshint:all" (jshint) task

2 files lint free.

Running "clean:tests" (clean) task

Running "shell:initRepo" (shell) task

Running "push_svn:main1" (push_svn) task

push_svn task: test/src/main --> tmp/build/a --> file:///tmp/grunt-push-svn-test

Prepare tmp path...
Prepare tmp svn working copy [tmp/build/a]: [file:///tmp/grunt-push-svn-test]..

Warning: spawn ENOENT Use --force to continue.

Aborted due to warnings.

Pushing only works first time round

I have a fairly simple setup with grunt-push-svn. I'm finding that if I run it once, everything works as it should but running it again returns an error like below:

Warning: There is already a repo in folder "./build" with url *** Use --force to continue.

Below is my grunt config:

module.exports = {
  options: {
    remove: false,
    username: '***'
    password: '***'
  },
  main: {
    src: 'dist/example/',
    dest: '***/example/',
    tmp: './build'
  }
};

Am I missing something or is this a bug?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.