mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Ignore Sync errors on pipes when doing CheckAttributeReader.CheckPath, fix the hang of git cat-file (#17096)
				
					
				
			* Ignore Sync errors on pipes when doing `CheckAttributeReader.CheckPath` * apply env patch * Drop the Sync and fix a number of issues with the Close function Signed-off-by: Andrew Thornton <art27@cantab.net> * add logs for DBIndexer and CheckPath * Fix some more closing bugs Signed-off-by: Andrew Thornton <art27@cantab.net> * Add test case for language_stats Signed-off-by: Andrew Thornton <art27@cantab.net> * Update modules/indexer/stats/db.go Co-authored-by: Lauris BH <lauris@nix.lv> Co-authored-by: Andrew Thornton <art27@cantab.net> Co-authored-by: Lauris BH <lauris@nix.lv> Co-authored-by: 6543 <6543@obermui.de>
This commit is contained in:
		
							
								
								
									
										128
									
								
								modules/git/tests/repos/language_stats_repo/hooks/update.sample
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										128
									
								
								modules/git/tests/repos/language_stats_repo/hooks/update.sample
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,128 @@ | ||||
| #!/bin/sh | ||||
| # | ||||
| # An example hook script to block unannotated tags from entering. | ||||
| # Called by "git receive-pack" with arguments: refname sha1-old sha1-new | ||||
| # | ||||
| # To enable this hook, rename this file to "update". | ||||
| # | ||||
| # Config | ||||
| # ------ | ||||
| # hooks.allowunannotated | ||||
| #   This boolean sets whether unannotated tags will be allowed into the | ||||
| #   repository.  By default they won't be. | ||||
| # hooks.allowdeletetag | ||||
| #   This boolean sets whether deleting tags will be allowed in the | ||||
| #   repository.  By default they won't be. | ||||
| # hooks.allowmodifytag | ||||
| #   This boolean sets whether a tag may be modified after creation. By default | ||||
| #   it won't be. | ||||
| # hooks.allowdeletebranch | ||||
| #   This boolean sets whether deleting branches will be allowed in the | ||||
| #   repository.  By default they won't be. | ||||
| # hooks.denycreatebranch | ||||
| #   This boolean sets whether remotely creating branches will be denied | ||||
| #   in the repository.  By default this is allowed. | ||||
| # | ||||
|  | ||||
| # --- Command line | ||||
| refname="$1" | ||||
| oldrev="$2" | ||||
| newrev="$3" | ||||
|  | ||||
| # --- Safety check | ||||
| if [ -z "$GIT_DIR" ]; then | ||||
| 	echo "Don't run this script from the command line." >&2 | ||||
| 	echo " (if you want, you could supply GIT_DIR then run" >&2 | ||||
| 	echo "  $0 <ref> <oldrev> <newrev>)" >&2 | ||||
| 	exit 1 | ||||
| fi | ||||
|  | ||||
| if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then | ||||
| 	echo "usage: $0 <ref> <oldrev> <newrev>" >&2 | ||||
| 	exit 1 | ||||
| fi | ||||
|  | ||||
| # --- Config | ||||
| allowunannotated=$(git config --type=bool hooks.allowunannotated) | ||||
| allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch) | ||||
| denycreatebranch=$(git config --type=bool hooks.denycreatebranch) | ||||
| allowdeletetag=$(git config --type=bool hooks.allowdeletetag) | ||||
| allowmodifytag=$(git config --type=bool hooks.allowmodifytag) | ||||
|  | ||||
| # check for no description | ||||
| projectdesc=$(sed -e '1q' "$GIT_DIR/description") | ||||
| case "$projectdesc" in | ||||
| "Unnamed repository"* | "") | ||||
| 	echo "*** Project description file hasn't been set" >&2 | ||||
| 	exit 1 | ||||
| 	;; | ||||
| esac | ||||
|  | ||||
| # --- Check types | ||||
| # if $newrev is 0000...0000, it's a commit to delete a ref. | ||||
| zero=$(git hash-object --stdin </dev/null | tr '[0-9a-f]' '0') | ||||
| if [ "$newrev" = "$zero" ]; then | ||||
| 	newrev_type=delete | ||||
| else | ||||
| 	newrev_type=$(git cat-file -t $newrev) | ||||
| fi | ||||
|  | ||||
| case "$refname","$newrev_type" in | ||||
| 	refs/tags/*,commit) | ||||
| 		# un-annotated tag | ||||
| 		short_refname=${refname##refs/tags/} | ||||
| 		if [ "$allowunannotated" != "true" ]; then | ||||
| 			echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2 | ||||
| 			echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 | ||||
| 			exit 1 | ||||
| 		fi | ||||
| 		;; | ||||
| 	refs/tags/*,delete) | ||||
| 		# delete tag | ||||
| 		if [ "$allowdeletetag" != "true" ]; then | ||||
| 			echo "*** Deleting a tag is not allowed in this repository" >&2 | ||||
| 			exit 1 | ||||
| 		fi | ||||
| 		;; | ||||
| 	refs/tags/*,tag) | ||||
| 		# annotated tag | ||||
| 		if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 | ||||
| 		then | ||||
| 			echo "*** Tag '$refname' already exists." >&2 | ||||
| 			echo "*** Modifying a tag is not allowed in this repository." >&2 | ||||
| 			exit 1 | ||||
| 		fi | ||||
| 		;; | ||||
| 	refs/heads/*,commit) | ||||
| 		# branch | ||||
| 		if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then | ||||
| 			echo "*** Creating a branch is not allowed in this repository" >&2 | ||||
| 			exit 1 | ||||
| 		fi | ||||
| 		;; | ||||
| 	refs/heads/*,delete) | ||||
| 		# delete branch | ||||
| 		if [ "$allowdeletebranch" != "true" ]; then | ||||
| 			echo "*** Deleting a branch is not allowed in this repository" >&2 | ||||
| 			exit 1 | ||||
| 		fi | ||||
| 		;; | ||||
| 	refs/remotes/*,commit) | ||||
| 		# tracking branch | ||||
| 		;; | ||||
| 	refs/remotes/*,delete) | ||||
| 		# delete tracking branch | ||||
| 		if [ "$allowdeletebranch" != "true" ]; then | ||||
| 			echo "*** Deleting a tracking branch is not allowed in this repository" >&2 | ||||
| 			exit 1 | ||||
| 		fi | ||||
| 		;; | ||||
| 	*) | ||||
| 		# Anything else (is there anything else?) | ||||
| 		echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 | ||||
| 		exit 1 | ||||
| 		;; | ||||
| esac | ||||
|  | ||||
| # --- Finished | ||||
| exit 0 | ||||
		Reference in New Issue
	
	Block a user