update.sample
上传用户:rftzhifu
上传日期:2017-02-21
资源大小:229k
文件大小:3k
源码类别:

android开发

开发平台:

Unix_Linux

  1. #!/bin/sh
  2. #
  3. # An example hook script to blocks unannotated tags from entering.
  4. # Called by git-receive-pack with arguments: refname sha1-old sha1-new
  5. #
  6. # To enable this hook, rename this file to "update".
  7. #
  8. # Config
  9. # ------
  10. # hooks.allowunannotated
  11. #   This boolean sets whether unannotated tags will be allowed into the
  12. #   repository.  By default they won't be.
  13. # hooks.allowdeletetag
  14. #   This boolean sets whether deleting tags will be allowed in the
  15. #   repository.  By default they won't be.
  16. # hooks.allowdeletebranch
  17. #   This boolean sets whether deleting branches will be allowed in the
  18. #   repository.  By default they won't be.
  19. #
  20. # --- Command line
  21. refname="$1"
  22. oldrev="$2"
  23. newrev="$3"
  24. # --- Safety check
  25. if [ -z "$GIT_DIR" ]; then
  26. echo "Don't run this script from the command line." >&2
  27. echo " (if you want, you could supply GIT_DIR then run" >&2
  28. echo "  $0 <ref> <oldrev> <newrev>)" >&2
  29. exit 1
  30. fi
  31. if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
  32. echo "Usage: $0 <ref> <oldrev> <newrev>" >&2
  33. exit 1
  34. fi
  35. # --- Config
  36. allowunannotated=$(git config --bool hooks.allowunannotated)
  37. allowdeletebranch=$(git config --bool hooks.allowdeletebranch)
  38. allowdeletetag=$(git config --bool hooks.allowdeletetag)
  39. # check for no description
  40. projectdesc=$(sed -e '1q' "$GIT_DIR/description")
  41. if [ -z "$projectdesc" -o "$projectdesc" = "Unnamed repository; edit this file to name it for gitweb." ]; then
  42. echo "*** Project description file hasn't been set" >&2
  43. exit 1
  44. fi
  45. # --- Check types
  46. # if $newrev is 0000...0000, it's a commit to delete a ref.
  47. if [ "$newrev" = "0000000000000000000000000000000000000000" ]; then
  48. newrev_type=delete
  49. else
  50. newrev_type=$(git-cat-file -t $newrev)
  51. fi
  52. case "$refname","$newrev_type" in
  53. refs/tags/*,commit)
  54. # un-annotated tag
  55. short_refname=${refname##refs/tags/}
  56. if [ "$allowunannotated" != "true" ]; then
  57. echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
  58. echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
  59. exit 1
  60. fi
  61. ;;
  62. refs/tags/*,delete)
  63. # delete tag
  64. if [ "$allowdeletetag" != "true" ]; then
  65. echo "*** Deleting a tag is not allowed in this repository" >&2
  66. exit 1
  67. fi
  68. ;;
  69. refs/tags/*,tag)
  70. # annotated tag
  71. ;;
  72. refs/heads/*,commit)
  73. # branch
  74. ;;
  75. refs/heads/*,delete)
  76. # delete branch
  77. if [ "$allowdeletebranch" != "true" ]; then
  78. echo "*** Deleting a branch is not allowed in this repository" >&2
  79. exit 1
  80. fi
  81. ;;
  82. refs/remotes/*,commit)
  83. # tracking branch
  84. ;;
  85. refs/remotes/*,delete)
  86. # delete tracking branch
  87. if [ "$allowdeletebranch" != "true" ]; then
  88. echo "*** Deleting a tracking branch is not allowed in this repository" >&2
  89. exit 1
  90. fi
  91. ;;
  92. *)
  93. # Anything else (is there anything else?)
  94. echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
  95. exit 1
  96. ;;
  97. esac
  98. # --- Finished
  99. exit 0