Skip to content

Instantly share code, notes, and snippets.

@joekur
Forked from stevenscg/submodule_strategy.rb
Created May 24, 2014 23:06
Show Gist options
  • Select an option

  • Save joekur/7de5df3fb4e46e358eff to your computer and use it in GitHub Desktop.

Select an option

Save joekur/7de5df3fb4e46e358eff to your computer and use it in GitHub Desktop.

Revisions

  1. @stevenscg stevenscg revised this gist Dec 30, 2013. 1 changed file with 5 additions and 2 deletions.
    7 changes: 5 additions & 2 deletions submodule_strategy.rb
    Original file line number Diff line number Diff line change
    @@ -23,9 +23,12 @@ def update
    git :remote, :update
    end

    # rsync the working tree to the release path
    # put the working tree in a release-branch,
    # make sure the submodules are up-to-date
    # and copy everything to the release path
    def release
    git :checkout, fetch(:branch)
    release_branch = fetch(:release_branch, File.basename(release_path))
    git :checkout, '-b', release_branch, fetch(:remote_branch, "origin/#{fetch(:branch)}")
    git :submodule, :update, '--init'
    context.execute "rsync -ar --exclude=.git\* #{repo_path}/ #{release_path}"
    end
  2. @stevenscg stevenscg created this gist Dec 30, 2013.
    33 changes: 33 additions & 0 deletions submodule_strategy.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,33 @@

    # this include won't work for some reason:
    # include Capistrano::Git::DefaultStrategy

    module SubmoduleStrategy

    # check for a .git directory
    def test
    test! " [ -d #{repo_path}/.git ] "
    end

    # same as in Capistrano::Git::DefaultStrategy
    def check
    test! :git, :'ls-remote', repo_url
    end

    def clone
    git :clone, '-b', fetch(:branch), '--recursive', repo_url, repo_path
    end

    # same as in Capistrano::Git::DefaultStrategy
    def update
    git :remote, :update
    end

    # rsync the working tree to the release path
    def release
    git :checkout, fetch(:branch)
    git :submodule, :update, '--init'
    context.execute "rsync -ar --exclude=.git\* #{repo_path}/ #{release_path}"
    end

    end