mirror of
https://github.com/oh-my-fish/oh-my-fish.git
synced 2025-02-02 19:31:44 +08:00
Merge pull request #70 from jeremiejig/remove_pushd_popd
Remove some pushd popd, using git --git-dir --work-tree
This commit is contained in:
commit
9f3ab25515
|
@ -58,13 +58,13 @@ omf_install() {
|
||||||
die "Could not clone the repository → ${OMF_PATH}:${OMF_REPO_BRANCH}"
|
die "Could not clone the repository → ${OMF_PATH}:${OMF_REPO_BRANCH}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local git_rev=$(git -C ${OMF_PATH} rev-parse HEAD) >/dev/null 2>&1
|
local git_rev=$(git --git-dir ${OMF_PATH}/.git --work-tree ${OMF_PATH} rev-parse HEAD) >/dev/null 2>&1
|
||||||
local git_upstream=$(git -C ${OMF_PATH} config remote.upstream.url)
|
local git_upstream=$(git --git-dir ${OMF_PATH}/.git --work-tree ${OMF_PATH} config remote.upstream.url)
|
||||||
|
|
||||||
if [ -z "${git_upstream}" ]; then
|
if [ -z "${git_upstream}" ]; then
|
||||||
git -C ${OMF_PATH} remote add upstream ${git_uri}
|
git --git-dir ${OMF_PATH}/.git --work-tree ${OMF_PATH} remote add upstream ${git_uri}
|
||||||
else
|
else
|
||||||
git -C ${OMF_PATH} remote set-url upstream ${git_uri}
|
git --git-dir ${OMF_PATH}/.git --work-tree ${OMF_PATH} remote set-url upstream ${git_uri}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Oh My Fish revision id → ${git_rev}"
|
echo "Oh My Fish revision id → ${git_rev}"
|
||||||
|
|
|
@ -40,9 +40,7 @@ function omf.install -a type_flag name_or_url
|
||||||
|
|
||||||
if test -e $OMF_PATH/$target
|
if test -e $OMF_PATH/$target
|
||||||
echo (omf::dim)"Updating $name_or_url $install_type..."(omf::off)
|
echo (omf::dim)"Updating $name_or_url $install_type..."(omf::off)
|
||||||
pushd $OMF_PATH/$target
|
omf.repo.pull $OMF_PATH/$target
|
||||||
omf.repo.pull
|
|
||||||
popd
|
|
||||||
echo (omf::em)"✔ $name_or_url $install_type up to date."(omf::off)
|
echo (omf::em)"✔ $name_or_url $install_type up to date."(omf::off)
|
||||||
else
|
else
|
||||||
echo (omf::dim)"Installing $name_or_url $install_type..."(omf::off)
|
echo (omf::dim)"Installing $name_or_url $install_type..."(omf::off)
|
||||||
|
|
|
@ -1,42 +1,48 @@
|
||||||
function omf.repo.pull
|
function omf.repo.pull
|
||||||
if test (command git config --get remote.upstream.url)
|
if test (count $argv) -eq 0
|
||||||
|
echo (omf::err)"Argument of omf.repo.pull is the repo path."(omf::off)
|
||||||
|
return $OMF_MISSING_ARG
|
||||||
|
end
|
||||||
|
set -l repo_dir $argv[1]
|
||||||
|
|
||||||
|
if test (command git --git-dir "$repo_dir"/.git --work-tree "$repo_dir" config --get remote.upstream.url)
|
||||||
set repository upstream
|
set repository upstream
|
||||||
else
|
else
|
||||||
set repository origin
|
set repository origin
|
||||||
end
|
end
|
||||||
|
|
||||||
set initial_branch (command git symbolic-ref -q --short HEAD); or return $OMF_UNKNOWN_ERR
|
set initial_branch (command git --git-dir "$repo_dir"/.git --work-tree "$repo_dir" symbolic-ref -q --short HEAD); or return $OMF_UNKNOWN_ERR
|
||||||
set initial_revision (command git rev-parse -q --verify HEAD); or return $OMF_UNKNOWN_ERR
|
set initial_revision (command git --git-dir "$repo_dir"/.git --work-tree "$repo_dir" rev-parse -q --verify HEAD); or return $OMF_UNKNOWN_ERR
|
||||||
|
|
||||||
if not command git diff --quiet
|
if not command git --git-dir "$repo_dir"/.git --work-tree "$repo_dir" diff --quiet
|
||||||
echo (omf::em)"Stashing your changes:"(omf::off)
|
echo (omf::em)"Stashing your changes:"(omf::off)
|
||||||
command git status --short --untracked-files
|
command git --git-dir "$repo_dir"/.git --work-tree "$repo_dir" status --short --untracked-files
|
||||||
|
|
||||||
command git stash save --include-untracked --quiet
|
command git --git-dir "$repo_dir"/.git --work-tree "$repo_dir" stash save --include-untracked --quiet
|
||||||
set stashed true
|
set stashed true
|
||||||
end
|
end
|
||||||
|
|
||||||
if test "$initial_branch" != master
|
if test "$initial_branch" != master
|
||||||
command git checkout master --quiet
|
command git --git-dir "$repo_dir"/.git --work-tree "$repo_dir" checkout master --quiet
|
||||||
end
|
end
|
||||||
|
|
||||||
# the refspec ensures that '$repository/master' gets updated
|
# the refspec ensures that '$repository/master' gets updated
|
||||||
command git pull --rebase --quiet $repository "refs/heads/master:refs/remotes/$repository/master"
|
command git --git-dir "$repo_dir"/.git --work-tree "$repo_dir" pull --rebase --quiet $repository "refs/heads/master:refs/remotes/$repository/master"
|
||||||
if test $status -eq 2 #SIGINT
|
if test $status -eq 2 #SIGINT
|
||||||
command git checkout $initial_branch
|
command git --git-dir "$repo_dir"/.git --work-tree "$repo_dir" checkout $initial_branch
|
||||||
command git reset --hard $initial_revision
|
command git --git-dir "$repo_dir"/.git --work-tree "$repo_dir" reset --hard $initial_revision
|
||||||
test "$stashed" = true; and command git stash pop
|
test "$stashed" = true; and command git --git-dir "$repo_dir"/.git --work-tree "$repo_dir" stash pop
|
||||||
end
|
end
|
||||||
|
|
||||||
if test "$initial_branch" != master
|
if test "$initial_branch" != master
|
||||||
command git checkout $initial_branch --quiet
|
command git --git-dir "$repo_dir"/.git --work-tree "$repo_dir" checkout $initial_branch --quiet
|
||||||
end
|
end
|
||||||
|
|
||||||
if test "$stashed" = true
|
if test "$stashed" = true
|
||||||
command git stash pop --quiet
|
command git --git-dir "$repo_dir"/.git --work-tree "$repo_dir" stash pop --quiet
|
||||||
|
|
||||||
echo (omf::em)"Restored your changes:"(omf::off)
|
echo (omf::em)"Restored your changes:"(omf::off)
|
||||||
command git status --short --untracked-files
|
command git --git-dir "$repo_dir"/.git --work-tree "$repo_dir" status --short --untracked-files
|
||||||
end
|
end
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|
|
@ -123,9 +123,8 @@ function omf -d "Oh My Fish"
|
||||||
omf.remove_package $argv[2] ; and refresh
|
omf.remove_package $argv[2] ; and refresh
|
||||||
|
|
||||||
case "u" "up" "upd" "update"
|
case "u" "up" "upd" "update"
|
||||||
pushd $OMF_PATH
|
|
||||||
echo (omf::em)"Updating Oh My Fish..."(omf::off)
|
echo (omf::em)"Updating Oh My Fish..."(omf::off)
|
||||||
if omf.repo.pull
|
if omf.repo.pull $OMF_PATH
|
||||||
echo (omf::em)"Oh My Fish is up to date."(omf::off)
|
echo (omf::em)"Oh My Fish is up to date."(omf::off)
|
||||||
else
|
else
|
||||||
echo (omf::err)"Oh My Fish failed to update."(omf::off)
|
echo (omf::err)"Oh My Fish failed to update."(omf::off)
|
||||||
|
@ -133,7 +132,6 @@ function omf -d "Oh My Fish"
|
||||||
end
|
end
|
||||||
omf.theme (cat $OMF_CONFIG/theme)
|
omf.theme (cat $OMF_CONFIG/theme)
|
||||||
omf.install_package (omf.list_installed_packages)
|
omf.install_package (omf.list_installed_packages)
|
||||||
popd
|
|
||||||
refresh
|
refresh
|
||||||
|
|
||||||
case "s" "su" "sub" "submit"
|
case "s" "su" "sub" "submit"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user