diff options
author | vg <vgm+dev@devys.org> | 2019-11-23 13:18:13 +0100 |
---|---|---|
committer | vg <vgm+dev@devys.org> | 2019-11-23 13:18:13 +0100 |
commit | a0f6cf9ea9fc0ca36263001a20bf1d0e00987731 (patch) | |
tree | 3e7c8ae0b2499e1fb8abdd367c6c54e977df29e6 /scripts/git-sync | |
parent | 6747e12f8f57b1c62308d3d509927f0af6f2498d (diff) | |
download | scripts-a0f6cf9ea9fc0ca36263001a20bf1d0e00987731.tar.gz scripts-a0f6cf9ea9fc0ca36263001a20bf1d0e00987731.tar.bz2 scripts-a0f6cf9ea9fc0ca36263001a20bf1d0e00987731.zip |
Rename git-sync to s/$/-noconflict/
Rename this command as their will be a new version failing in case of
conflict instead of duplicating conflicting files.
Diffstat (limited to 'scripts/git-sync')
-rwxr-xr-x | scripts/git-sync | 93 |
1 files changed, 0 insertions, 93 deletions
diff --git a/scripts/git-sync b/scripts/git-sync deleted file mode 100755 index e0117d7..0000000 --- a/scripts/git-sync +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/bash -set -eu - -verbose=0 -hosthash=$(python3 -c "import uuid, hashlib -print(hashlib.new('sha1', str(uuid.getnode()).encode('utf8')).hexdigest())") -#hostident="${HOSTNAME}" -hostident="${hosthash}" - -if [ -d "$(git rev-parse --git-dir)/annex" ]; then - echo 'Sync: using git annex' - exec git annex sync "$@" -fi - -# determine current branch name -branch_name=$(git symbolic-ref -q --short HEAD) - -# remote name -remote_name=$(git config --get branch.${branch_name}.remote || true) - -# conflict commit message -conflict_message="Merge conflict autocommit on ${hostident}" - -if [ -z "$remote_name" ]; then - echo "No remote for this repository" >&2 - exit 1 -fi - -if [ "$(git config --get --bool branch.${branch_name}.sync)" != "true" ]; then - echo "Branch is not configured to accept git-sync" >&2 - echo "To accept git-sync operation, set current branch sync to true:" >&2 - echo " git config --bool branch.${branch_name}.sync true" >&2 - exit 1 -fi - -if [ "$verbose" -ne 0 ]; then - echo 'Sync: git autocommit' -fi -git add -A "./$(git rev-parse --show-cdup)" -if ! git diff --cached --quiet; then - git status --short - git commit -m "Auto-commit on ${hostident}" -fi - -if [ "$verbose" -ne 0 ]; then - echo 'Sync: fetch and merge' -fi - -git fetch --quiet - -# might fail one time if conflict detected -git merge -m "$conflict_message" || true - -if [ "$verbose" -ne 0 ]; then - echo 'Sync: conflict autocommit' -fi - -git status --porcelain | while read -r filename; do - state="${filename:0:2}" - filename="${filename:3}" - ours="${filename}.${hostident}.conflict" - theirs="${filename}.${remote_name}.conflict" - case "$state" in - *U*) - git checkout --ours -- "$filename" - mv -i -- "$filename" "$ours" - git add -- "$ours" - git checkout --theirs -- "$filename" - cp -ai -- "$filename" "$theirs" - git add -- "$filename" - git add -- "$theirs" - ;; - esac -done - -# no action is done if there is nothing to commit -if git status --porcelain | grep -q .; then - git status --short - git commit -m "$conflict_message" -fi - -# should not fail again -git merge -m "$conflict_message" - -if [ "$verbose" -ne 0 ]; then - echo 'Sync: pushing changes' -fi - -git push --quiet - -if [ "$verbose" -ne 0 ]; then - echo 'Sync: done' -fi |