Import from root chezmoi source
This commit is contained in:
commit
3eeef30313
61 files changed
+2833
No files matched your search
@@ -0,0 +1,37 @@
|
||||
function czs --description 'chezmoi: re-add drifted files, then commit + push the source repo'
|
||||
# Optional targets scope both the status view and the re-add,
|
||||
# e.g. `chs ~/.config/fish`. No args = all managed files.
|
||||
set -l drift (chezmoi status $argv)
|
||||
or return
|
||||
|
||||
if test -n "$drift"
|
||||
printf '%s\n' $drift
|
||||
# re-add takes the local (destination) contents as truth for modified
|
||||
# files; templates are never overwritten, non-file entries are ignored.
|
||||
chezmoi re-add $argv
|
||||
or return
|
||||
else
|
||||
echo "chs: in sync — nothing to re-add"
|
||||
end
|
||||
|
||||
# Commit + sync the source repo (~/.local/share/chezmoi).
|
||||
set -l src (chezmoi source-path)
|
||||
if test -n "$(git -C $src status --porcelain)"
|
||||
git -C $src add -A
|
||||
and git -C $src commit --quiet -m 'chs: re-add drifted files'
|
||||
or return
|
||||
echo "chs: committed "(git -C $src rev-parse --short HEAD)
|
||||
end
|
||||
|
||||
# Push anything unpushed — covers this commit AND leftovers from a
|
||||
# previously failed push. --autostash tolerates post-commit hooks
|
||||
# (beads export) re-dirtying the tree mid-sync.
|
||||
set -l ahead (git -C $src rev-list --count @{upstream}..HEAD 2>/dev/null; or echo 0)
|
||||
if test $ahead -gt 0
|
||||
git -C $src pull --rebase --autostash --quiet
|
||||
and git -C $src push --quiet
|
||||
and echo "chs: pushed $ahead commit(s) to "(git -C $src remote get-url origin)
|
||||
else
|
||||
echo "chs: remote up to date"
|
||||
end
|
||||
end
|
||||
Reference in new issue
Block a user