Compare commits

...
This repository has been archived on 2025-05-04. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.

20 commits

Author SHA1 Message Date
Jan-Felix
47e5e5c376 fixed a potential bug in the git commit diffing when there is a file named HEAD 2017-04-05 15:04:06 +02:00
Jan-Felix
9f165c208b fixed a comment 2017-04-04 17:43:51 +02:00
Jan-Felix
53d69c7200 fixed linting errors 2017-04-04 17:42:06 +02:00
Jan-Felix
ce63e87fd0 updated readme 2017-04-04 17:33:02 +02:00
Jan-Felix
a2dbd3f1b9 finished up the publish branch to subfolder feature 2017-04-04 17:07:54 +02:00
Jan-Felix
e0dd4eaa54 added option to retrieve current branch name
and use it as the subfolder name for the destination
2017-04-04 16:37:20 +02:00
Jan-Felix
fde7245554 integrated changes from lelandmiller:base-dir 2017-04-04 15:53:54 +02:00
Tim Schaub
e0f90a8ec2 Merge pull request from mandeldl/patch-1
Fix small typo
2016-12-01 23:09:29 -08:00
David Mandel
9ac60dfea7 fix small typoe 2016-12-01 10:21:04 -05:00
Tim Schaub
c6cd05dde5 0.12.0 2016-11-16 18:17:32 -07:00
Tim Schaub
ffc8d6acf5 Log changes 2016-11-16 18:17:26 -07:00
Tim Schaub
33815e4cb1 Merge pull request from tschaub/updates
Updates dependencies
2016-11-16 18:14:07 -07:00
Tim Schaub
b7e8779c41 Merge pull request from sobolevn/patch-1
Updated readme.md with svg image
2016-11-16 18:11:46 -07:00
Tim Schaub
f8a7f4cf11 Update dependencies 2016-11-16 18:11:06 -07:00
Tim Schaub
b424c0fdea Test on Node 6 and cache dependencies 2016-11-16 18:10:37 -07:00
Tim Schaub
7bc6da9277 Update dev dependencies 2016-11-16 18:10:37 -07:00
Tim Schaub
49e48a457a Unindent 2016-11-16 18:10:37 -07:00
Tim Schaub
ab5c4e570c Merge pull request from tschaub/greenkeeper-globby-6.1.0
Update globby to version 6.1.0 🚀
2016-11-16 18:07:37 -07:00
greenkeeperio-bot
fd9e5cf38f chore(package): update globby to version 6.1.0
https://greenkeeper.io/
2016-11-04 02:11:09 -06:00
Sobolev Nikita
d1dbe48527 Updated readme.md with svg image 2016-10-25 09:01:21 +03:00
7 changed files with 121 additions and 16 deletions

View file

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

View file

@ -27,6 +27,8 @@ program
'Remove files that match the given pattern ' +
'(ignored if used together with --add).', '.')
.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);
ghpages.publish(path.join(process.cwd(), program.dist), {
@ -41,6 +43,8 @@ ghpages.publish(path.join(process.cwd(), program.dist), {
only: program.remove,
remote: program.remote,
push: !program.noPush,
dest: program.dest,
branchnameAsDest: program.branchnameAsDest,
logger: function(message) {
process.stderr.write(message + '\n');
}

View file

@ -1,3 +1,23 @@
## 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
* [#61](https://github.com/tschaub/gh-pages/pull/61) - Support a custom remote. ([@marco-c](https://github.com/marco-c))

View file

@ -99,8 +99,7 @@ exports.clone = function clone(repo, dir, branch, options) {
return Q.resolve();
} else {
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) {
args.push('--depth', options.depth);
}
@ -207,7 +206,7 @@ exports.add = function add(files, cwd) {
* @return {Promise} A promise.
*/
exports.commit = function commit(message, cwd) {
return spawn(git, ['diff-index', '--quiet', 'HEAD', '.'], cwd)
return spawn(git, ['diff-index', '--quiet', 'HEAD', '--', '.'], cwd)
.then(function() {
// nothing to commit
return Q.resolve();

View file

@ -35,6 +35,35 @@ 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) {
if (options.repo) {
return Q.resolve(options.repo);
@ -57,6 +86,8 @@ exports.publish = function publish(basePath, config, callback) {
}
var defaults = {
dest: '.',
branchnameAsDest: false,
add: false,
git: 'git',
clone: getCacheDir(),
@ -129,6 +160,8 @@ exports.publish = function publish(basePath, config, callback) {
git.exe(options.git);
var dest = options.dest;
var repoUrl;
getRepo(options)
.then(function(repo) {
@ -136,6 +169,17 @@ exports.publish = function publish(basePath, config, callback) {
log('Cloning ' + repo + ' into ' + options.clone);
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() {
return getRemoteUrl(options.clone, options.remote)
.then(function(url) {
@ -168,14 +212,17 @@ exports.publish = function publish(basePath, config, callback) {
.then(function() {
if (!options.add) {
log('Removing files');
return git.rm(only.join(' '), options.clone);
var outputFiles = only.map(function(file) {
return path.join(dest, file);
});
return git.rm(outputFiles.join(' '), options.clone);
} else {
return Q.resolve();
}
})
.then(function() {
log('Copying files');
return copy(files, basePath, options.clone);
return copy(files, basePath, path.join(options.clone, dest));
})
.then(function() {
log('Adding all');

View file

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

View file

@ -64,7 +64,7 @@ ghpages.publish(path.join(__dirname, 'build'), callback);
### Options
The default options work for simple cases cases. The options described below let you push to alternate branches, customize your commit messages, and more.
The default options work for simple cases. The options described below let you push to alternate branches, customize your commit messages, and more.
#### <a id="optionssrc">options.src</a>
@ -299,6 +299,37 @@ ghpages.publish(path.join(__dirname, 'build'), {
}, 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
Installing the package creates a `gh-pages` command line utility. Run `gh-pages --help` to see a list of supported options.
@ -321,4 +352,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).
[![Current Status](https://secure.travis-ci.org/tschaub/gh-pages.png?branch=master)](https://travis-ci.org/tschaub/gh-pages)
[![Current Status](https://secure.travis-ci.org/tschaub/gh-pages.svg?branch=master)](https://travis-ci.org/tschaub/gh-pages)