Compare commits

..

No commits in common. "publish-branch-to-subfolder" and "master" have entirely different histories.

7 changed files with 16 additions and 121 deletions

View file

@ -1,10 +1,6 @@
language: node_js language: node_js
node_js: node_js:
- "6" - "4"
cache:
directories:
- node_modules
branches: branches:
only: only:

View file

@ -27,8 +27,6 @@ program
'Remove files that match the given pattern ' + 'Remove files that match the given pattern ' +
'(ignored if used together with --add).', '.') '(ignored if used together with --add).', '.')
.option('-n, --no-push', 'Commit only (with no push)') .option('-n, --no-push', 'Commit only (with no push)')
.option('-e, --dest <dest>', 'The destination in the target branch', '.')
.option('-c, --branchname-as-dest', 'Use a subfolder named after the current as the destination')
.parse(process.argv); .parse(process.argv);
ghpages.publish(path.join(process.cwd(), program.dist), { ghpages.publish(path.join(process.cwd(), program.dist), {
@ -43,8 +41,6 @@ ghpages.publish(path.join(process.cwd(), program.dist), {
only: program.remove, only: program.remove,
remote: program.remote, remote: program.remote,
push: !program.noPush, push: !program.noPush,
dest: program.dest,
branchnameAsDest: program.branchnameAsDest,
logger: function(message) { logger: function(message) {
process.stderr.write(message + '\n'); process.stderr.write(message + '\n');
} }

View file

@ -1,23 +1,3 @@
## v0.12.0
* [#146](https://github.com/tschaub/gh-pages/pull/146) - Updates dependencies ([@tschaub](https://github.com/tschaub))
* [#138](https://github.com/tschaub/gh-pages/pull/138) - Updated readme.md with svg image ([@sobolevn](https://github.com/sobolevn))
* [#142](https://github.com/tschaub/gh-pages/pull/142) - Update globby to version 6.1.0 🚀 ([@tschaub](https://github.com/tschaub))
* [#134](https://github.com/tschaub/gh-pages/pull/134) - Update eslint to version 3.8.0 🚀 ([@tschaub](https://github.com/tschaub))
* [#135](https://github.com/tschaub/gh-pages/pull/135) - Update async to version 2.1.2 🚀 ([@tschaub](https://github.com/tschaub))
* [#130](https://github.com/tschaub/gh-pages/pull/130) - Update mocha to version 3.1.1 🚀 ([@tschaub](https://github.com/tschaub))
* [#112](https://github.com/tschaub/gh-pages/pull/112) - Update graceful-fs to version 4.1.6 🚀 ([@tschaub](https://github.com/tschaub))
* [#106](https://github.com/tschaub/gh-pages/pull/106) - Add a --tag option to the cli ([@donavon](https://github.com/donavon))
* [#102](https://github.com/tschaub/gh-pages/pull/102) - Update graceful-fs to version 4.1.5 🚀 ([@tschaub](https://github.com/tschaub))
* [#89](https://github.com/tschaub/gh-pages/pull/89) - Update globby to version 5.0.0 🚀 ([@tschaub](https://github.com/tschaub))
* [#87](https://github.com/tschaub/gh-pages/pull/87) - Update eslint-config-tschaub to version 5.0.0 🚀 ([@tschaub](https://github.com/tschaub))
* [#78](https://github.com/tschaub/gh-pages/pull/78) - Use rimraf for cleaning ([@tschaub](https://github.com/tschaub))
* [#75](https://github.com/tschaub/gh-pages/pull/75) - Expose a "remove" option to the CLI ([@tschaub](https://github.com/tschaub))
* [#76](https://github.com/tschaub/gh-pages/pull/76) - Update eslint to version 2.8.0 🚀 ([@tschaub](https://github.com/tschaub))
* [#70](https://github.com/tschaub/gh-pages/pull/70) - Update eslint to version 2.7.0 🚀 ([@tschaub](https://github.com/tschaub))
* [#63](https://github.com/tschaub/gh-pages/pull/63) - Update eslint to version 2.4.0 🚀 ([@tschaub](https://github.com/tschaub))
* [#62](https://github.com/tschaub/gh-pages/pull/62) - Update eslint to version 2.3.0 🚀 ([@tschaub](https://github.com/tschaub))
## v0.11.0 ## v0.11.0
* [#61](https://github.com/tschaub/gh-pages/pull/61) - Support a custom remote. ([@marco-c](https://github.com/marco-c)) * [#61](https://github.com/tschaub/gh-pages/pull/61) - Support a custom remote. ([@marco-c](https://github.com/marco-c))

View file

@ -99,7 +99,8 @@ exports.clone = function clone(repo, dir, branch, options) {
return Q.resolve(); return Q.resolve();
} else { } else {
return fs.makeTree(path.dirname(path.resolve(dir))).then(function() { return fs.makeTree(path.dirname(path.resolve(dir))).then(function() {
var args = ['clone', repo, dir, '--branch', branch, '--single-branch', '--origin', options.remote]; var args = ['clone', repo, dir, '--branch', branch, '--single-branch',
'--origin', options.remote];
if (options.depth) { if (options.depth) {
args.push('--depth', options.depth); args.push('--depth', options.depth);
} }
@ -206,7 +207,7 @@ exports.add = function add(files, cwd) {
* @return {Promise} A promise. * @return {Promise} A promise.
*/ */
exports.commit = function commit(message, cwd) { exports.commit = function commit(message, cwd) {
return spawn(git, ['diff-index', '--quiet', 'HEAD', '--', '.'], cwd) return spawn(git, ['diff-index', '--quiet', 'HEAD', '.'], cwd)
.then(function() { .then(function() {
// nothing to commit // nothing to commit
return Q.resolve(); return Q.resolve();

View file

@ -35,35 +35,6 @@ function getRemoteUrl(dir, remote) {
}); });
} }
/**
* Return a promise resolving to the currently checked out branch name.
* @param {Object} options The options object
* @return {Promise} A promise.
*/
function getBranchName(options) {
var name;
return git(['rev-parse', '--abbrev-ref', 'HEAD'], options.repo || process.cwd())
.progress(function(chunk) {
name = String(chunk).split(/[\n\r]/).shift();
})
.then(function() {
if (name) {
return Q.resolve(name);
} else {
return Q.reject(new Error(
'Failed to get branch name from options or current directory.'));
}
})
.fail(function(err) {
return Q.reject(new Error(
'Failed to get branch name (task must either be ' +
'run in a git repository or must be configured with the "repo" ' +
'option).'));
});
}
function getRepo(options) { function getRepo(options) {
if (options.repo) { if (options.repo) {
return Q.resolve(options.repo); return Q.resolve(options.repo);
@ -86,8 +57,6 @@ exports.publish = function publish(basePath, config, callback) {
} }
var defaults = { var defaults = {
dest: '.',
branchnameAsDest: false,
add: false, add: false,
git: 'git', git: 'git',
clone: getCacheDir(), clone: getCacheDir(),
@ -160,8 +129,6 @@ exports.publish = function publish(basePath, config, callback) {
git.exe(options.git); git.exe(options.git);
var dest = options.dest;
var repoUrl; var repoUrl;
getRepo(options) getRepo(options)
.then(function(repo) { .then(function(repo) {
@ -169,17 +136,6 @@ exports.publish = function publish(basePath, config, callback) {
log('Cloning ' + repo + ' into ' + options.clone); log('Cloning ' + repo + ' into ' + options.clone);
return git.clone(repo, options.clone, options.branch, options); return git.clone(repo, options.clone, options.branch, options);
}) })
.then(function() {
if (options.branchnameAsDest) {
log('Retrieving current branch name');
return getBranchName(options.clone)
.then(function(branchname) {
dest = './' + branchname;
});
} else {
return Q.resolve();
}
})
.then(function() { .then(function() {
return getRemoteUrl(options.clone, options.remote) return getRemoteUrl(options.clone, options.remote)
.then(function(url) { .then(function(url) {
@ -212,17 +168,14 @@ exports.publish = function publish(basePath, config, callback) {
.then(function() { .then(function() {
if (!options.add) { if (!options.add) {
log('Removing files'); log('Removing files');
var outputFiles = only.map(function(file) { return git.rm(only.join(' '), options.clone);
return path.join(dest, file);
});
return git.rm(outputFiles.join(' '), options.clone);
} else { } else {
return Q.resolve(); return Q.resolve();
} }
}) })
.then(function() { .then(function() {
log('Copying files'); log('Copying files');
return copy(files, basePath, path.join(options.clone, dest)); return copy(files, basePath, options.clone);
}) })
.then(function() { .then(function() {
log('Adding all'); log('Adding all');

View file

@ -1,6 +1,6 @@
{ {
"name": "gh-pages", "name": "gh-pages",
"version": "0.12.0", "version": "0.11.0",
"description": "Publish to a gh-pages branch on GitHub (or any other branch on any other remote)", "description": "Publish to a gh-pages branch on GitHub (or any other branch on any other remote)",
"keywords": [ "keywords": [
"git", "git",
@ -28,17 +28,17 @@
"dependencies": { "dependencies": {
"async": "2.1.2", "async": "2.1.2",
"commander": "2.9.0", "commander": "2.9.0",
"globby": "^6.1.0", "globby": "^5.0.0",
"graceful-fs": "4.1.10", "graceful-fs": "4.1.6",
"q": "1.4.1", "q": "1.4.1",
"q-io": "1.13.2", "q-io": "1.13.2",
"rimraf": "^2.5.4" "rimraf": "^2.5.2"
}, },
"devDependencies": { "devDependencies": {
"chai": "^3.5.0", "chai": "^3.4.1",
"eslint": "^3.10.2", "eslint": "3.8.0",
"eslint-config-tschaub": "^6.0.0", "eslint-config-tschaub": "5.0.0",
"mocha": "^3.1.2" "mocha": "^3.1.1"
}, },
"bin": { "bin": {
"gh-pages": "bin/gh-pages" "gh-pages": "bin/gh-pages"

View file

@ -64,7 +64,7 @@ ghpages.publish(path.join(__dirname, 'build'), callback);
### Options ### Options
The default options work for simple cases. The options described below let you push to alternate branches, customize your commit messages, and more. The default options work for simple cases cases. The options described below let you push to alternate branches, customize your commit messages, and more.
#### <a id="optionssrc">options.src</a> #### <a id="optionssrc">options.src</a>
@ -299,37 +299,6 @@ ghpages.publish(path.join(__dirname, 'build'), {
}, callback); }, callback);
``` ```
#### <a id="optionsdest">options.dest</a>
* type: `string`
* default: `'.'`
The destination folder within the destination branch/repository.
Example use of the `dest` option:
```js
/**
* Place content in the static/project subdirectory of the target
* branch/repository. If removing files, only remove static/project.
*/
ghpages.publish(path.join(__dirname, 'build'), {
dest: 'static/project'
}, callback);
```
#### <a id="optionsdest">options.branchnameAsDest</a>
* type: `boolean`
* default: `false`
Use the current branch name as the path to the destination folder within the destination branch/repository. This option overrides the `dest` option.
Example use of the `dest` option:
```js
ghpages.publish(path.join(__dirname, 'build'), { branchnameAsDest: true }, callback);
```
## Command Line Utility ## Command Line Utility
Installing the package creates a `gh-pages` command line utility. Run `gh-pages --help` to see a list of supported options. Installing the package creates a `gh-pages` command line utility. Run `gh-pages --help` to see a list of supported options.
@ -352,4 +321,4 @@ npm run deploy
Note that this plugin requires Git 1.7.6 or higher (because it uses the `--exit-code` option for `git ls-remote`). If you'd like to see this working with earlier versions of Git, please [open an issue](https://github.com/tschaub/gh-pages/issues). Note that this plugin requires Git 1.7.6 or higher (because it uses the `--exit-code` option for `git ls-remote`). If you'd like to see this working with earlier versions of Git, please [open an issue](https://github.com/tschaub/gh-pages/issues).
[![Current Status](https://secure.travis-ci.org/tschaub/gh-pages.svg?branch=master)](https://travis-ci.org/tschaub/gh-pages) [![Current Status](https://secure.travis-ci.org/tschaub/gh-pages.png?branch=master)](https://travis-ci.org/tschaub/gh-pages)