Html export another branch

I have org files in github repository and use project page in future. Export org files to html for use in gh-pages like this;

  • editing org files on master branch and commit
  • html export to temporary directory
  • changing a branch to gh-pages
  • copy files from a temporary directory and commit

is there a way to export directly to the gh-pages branch without this export/change branch/copy loop?

+7
source share
2 answers

I fixed the problem using git submodules. Now I can export my org files to a folder in the master repository. This folder is actually a submodule of the same gh-pages repositories. You can check my org-publish-project-alist in the repository and page . Now my development cycle;

  • Edit to master then export html
  • Add, paste gh-pages directory
  • Add, paste master root directory

First, I added the gh-pages branch, as said in github , then added the gh-pages branch as a submodule:

 [ slmn@uriel org-test](gh-pages)$ git checkout master [ slmn@uriel org-test](master)$ git submodule add -b gh-pages git@github.com :selman/org-test.git gh-pages [ slmn@uriel org-test](master)$ git commit -m "branch added as submodule" 

index.org exported as html to the gh-pages directory:

 [ slmn@uriel org-test](master)$ cd gh-pages/ [ slmn@uriel gh-pages](gh-pages)$ git add . [ slmn@uriel gh-pages](gh-pages)$ git commit -m "pages updated" [ slmn@uriel gh-pages](gh-pages)$ git push 

The changed submodule is added to master :

 [ slmn@uriel gh-pages](gh-pages)$ cd .. [ slmn@uriel org-test](master)$ git add . [ slmn@uriel org-test](master)$ git commit -m "pages updated" [ slmn@uriel org-test](master)$ git push 
+2
source

Instead of exporting to a temporary directory, you can export to the second repository clone (with the output of the gh-pages branch).

If you want a more automated but complicated solution, you can run the following script after exporting your files:

 #!/bin/sh usage() { cat <<EOF Usage: $0 [options] [--] <path_to_exported_html_files> Arguments: -h, --help Display this usage message and exit. -b <branch>, --branch=<branch>, --branch <branch> Commit the files to the given branch. If the branch doesn't exist, a new root (parentless) commit is created. Defaults to: ${DEFAULT_BRANCH} -- Treat the remaining arguments as path names. Useful if the path name might begin with '-'. <path_to_exported_html_files> Directory containing the html files exported by org-mode. If the path begins with '-', it will be treated as an option unless it comes after the '--' option. EOF } DEFAULT_BRANCH=gh-pages # handy logging and error handling functions log() { printf '%s\n' "$*"; } warn() { log "WARNING: $*" >&2; } error() { log "ERROR: $*" >&2; } fatal() { error "$*"; exit 1; } try() { " $@ " || fatal "' $@ ' failed"; } usage_fatal() { error "$*"; usage >&2; exit 1; } # parse options BRANCH=${DEFAULT_BRANCH} while [ "$#" -gt 0 ]; do arg=$1 # the quotes around the equals signs in the case patterns below # are to work around a bug in emacs' syntax parsing case $1 in -h|--help) usage; exit 0;; -b|--branch) shift; BRANCH=$1;; --branch'='*) BRANCH=${1#--branch=};; --) shift; break;; -*) usage_fatal "unknown option: '$1'";; *) break;; # reached the path esac shift || usage_fatal "option '${arg}' requires a value" done [ "$#" -gt 0 ] || usage_fatal "must specify a directory" dir=$1; shift dir=$(cd "${dir}" && pwd -P) \ || fatal "unable to convert ${dir} to an absolute path" [ "$#" -eq 0 ] || usage_fatal "unknown option: $1" [ -d "${dir}" ] || usage_fatal "${dir} is not a directory" # sanity check: make sure ${BRANCH} isn't currently checked out # (otherwise 'git status' will show modified files when this script is # done) CURRENT_BRANCH=$(try git symbolic-ref HEAD) || exit 1 case ${CURRENT_BRANCH} in refs/heads/"${BRANCH}") fatal "${BRANCH} must not be checked out";; esac # set up git GIT_DIR=$(git rev-parse --git-dir) \ || fatal "unable to locate .git directory" GIT_DIR=$(cd "${GIT_DIR}" && pwd -P) \ || fatal "unable to convert git directory to an absolute path" GIT_INDEX_FILE=$(mktemp -u) \ || fatal "unable to generate a temporary file name" export GIT_DIR export GIT_INDEX_FILE export GIT_WORK_TREE="${dir}" # stage the files try cd "${dir}" try git add -Af . # commit the files PARENT=$(git rev-parse --verify -q refs/heads/"${BRANCH}") \ || warn "creating a new branch named ${BRANCH}" TREE=$(try git write-tree) || exit 1 COMMIT_MESSAGE="Import files from ${dir}" COMMIT=$( printf '%s\n' "${COMMIT_MESSAGE}" | try git commit-tree "${TREE}" ${PARENT:+-p "${PARENT}"} ) || exit 1 # update the branch to point to the result try git update-ref refs/heads/"${BRANCH}" -m "commit: ${COMMIT_MESSAGE}" \ "${COMMIT}" # clean up try rm -f "${GIT_INDEX_FILE}" log "committed ${COMMIT} to ${BRANCH}" 
+2
source

All Articles