zim/modules/git/functions/git-submodule-move
Eric Nielsen 0a7451999e [git] Review all functions but ones using git fsck
as there are multiple solutions to list the lost commits and stashes,
but I could not find reliable ones. See
https://stackoverflow.com/q/89332/2654518.
Well, the current `git-commit-lost` and `git-stash-dropped`
implementations don't accurately work at least on the repositories I'm
working with.

The `git-hub` functions where removed at dcc3265, but aliases and docs
remained. Remove these.

Remove line break from `_git_log_oneline_format`, so it really occupies
one line. And change date format in `glG` output from committer date
(`%cd`) to relative author date (`%ar`) to conform with other formats.

Refactor remaining functions. Most of the changes refer to using the
already existing git error messages and return codes, instead of having
code that creates that. (Error messages for 'not in a git repository'
where not even consistent among functions, and there's were I started
this...)
The most drastic changes can be seen in `git-root`, then in `git-dir`
and `git-stash-clear-interactive`.
2018-01-10 10:25:25 -05:00

22 lines
491 B
Bash

# vim:et sts=2 sw=2 ft=zsh
local git_root
git_root=$(git-root) || return 1
if [[ ${PWD} != ${git_root} ]]; then
print "${0}: must be run from the root of the work tree" >&2
return 1
fi
local src="${1}"
local dst="${2}"
local url=$(command git config --file .gitmodules --get "submodule.${src}.url")
if [[ -z "${url}" ]]; then
print "${0}: submodule not found: ${src}" >&2
return 1
fi
mkdir -p "${dst:h}"
git-submodule-remove "${src}"
git submodule add "${url}" "${dst}"
return 0