gitUpload.sh 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #!/bin/bash
  2. target="${1:-}"
  3. repo="${2:-}"
  4. branch="${3:-main}"
  5. clone="${4:-}"
  6. [ -n "${target}" ] && [ -n "${repo}" ] || exit 1
  7. tmp=$(mktemp -d)
  8. trap "rm -rf ${tmp}" EXIT
  9. cd "$tmp"
  10. function createRepo(){
  11. rn="${1:-}"
  12. [ -n "$rn" ] || return 0
  13. resp=`curl -X POST -sSL "${rn%github.com*}api.github.com/user/repos" -d "{\"name\":\"${rn##*/}\"}"`
  14. echo "$resp" |grep '"status":' && return 1 || return 0
  15. }
  16. # init
  17. git config --global init.defaultBranch "$branch"
  18. git config --global pull.rebase true
  19. git config --global user.name "remote"
  20. git config --global user.email "remote@user"
  21. git init
  22. git checkout -b "$branch"
  23. git remote rm origin >/dev/null 2>&1
  24. git remote rm clone >/dev/null 2>&1
  25. git remote add origin "$repo"
  26. git pull origin "$branch"
  27. [ -n "${target}" ] && [ "${target}" != "-" ] && {
  28. [ -f "${target}" ] && cp -rf "${target}" "${tmp}"
  29. [ -d "${target}" ] && cp -rf "${target%/}/." "${tmp}"
  30. }
  31. [ -n "$clone" ] && {
  32. rm -rf .git
  33. git init
  34. git checkout -b "$branch"
  35. git remote add clone "$clone"
  36. createRepo "$clone"
  37. find "$tmp" -name "*.sh" |xargs sed -i "s#/${repo##https://*github.com/}#/${clone##https://*github.com/}#g"
  38. }
  39. [ "${target}" == "-" ] && read -p "Pause <${tmp}> ..."
  40. git add .
  41. git commit -m `date +'%Y%m%d%H%M%S'`
  42. # git config http.postBuffer 524288000
  43. [ -n "$clone" ] && git push clone "$branch" -f || git push origin "$branch" -f