我在github存储库中使用org文件并使用
project pages未来。导出组织文件
要在gh-pages
中使用html,就像这样;
master
分支上编辑组织文件并提交gh-pages
有没有一种方法可以直接导出到gh-pages
分支
这个export/change branch/copy
周期?
答案 0 :(得分:2)
您可以导出到存储库的第二个克隆(已检出gh-pages
分支),而不是导出到临时目录。
如果您想要更自动化但更复杂的解决方案,可以在导出文件后运行以下脚本:
#!/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}"
答案 1 :(得分:2)
我修复了使用git子模块的问题。现在我可以将我的组织文件导出到master
存储库下的文件夹中。该文件夹实际上是相同存储库gh-pages
分支的子模块。您可以在repository和page中查看我的org-publish-project-alist
。现在是我的开发周期;
master
中修改,然后导出html gh-pages
目录master
根目录首先我在github中添加了gh-pages
分支,然后将gh-pages
分支添加为子模块:
[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
导出为html到gh-pages
目录:
[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
更改了添加到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