mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-03 20:36:07 +01:00 
			
		
		
		
	Clean some legacy files and move some build files (#23699)
* Clean the "tools" directory. The "tools" directory contains only two files, move them. * The "external_renderer.go" works like "cat" command to echo Stdin to Stdout , to help testing. * The `// gobuild: external_renderer` is incorrect, there should be no space: `//gobuild: external_renderer` * The `fmt.Print(os.Args[1])` is not a well-defined behavior, and it's never used. * The "watch.sh" is for "make watch", it's somewhat related to "build" * After this PR, there is no "tools" directory, the project root directory looks slightly simpler than before. * Remove the legacy "contrib/autoboot.sh", there is no "gogs_supervisord.sh" * Remove the legacy "contrib/mysql.sql", it's never mentioned anywhere. * Remove the legacy "contrib/pr/checkout.go", it has been broken for long time, and it introduces unnecessary dependencies of the main code base.
This commit is contained in:
		
							
								
								
									
										9
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								Makefile
									
									
									
									
									
								
							@@ -131,7 +131,7 @@ TEST_TAGS ?= sqlite sqlite_unlock_notify
 | 
			
		||||
 | 
			
		||||
TAR_EXCLUDES := .git data indexers queues log node_modules $(EXECUTABLE) $(FOMANTIC_WORK_DIR)/node_modules $(DIST) $(MAKE_EVIDENCE_DIR) $(AIR_TMP_DIR) $(GO_LICENSE_TMP_DIR)
 | 
			
		||||
 | 
			
		||||
GO_DIRS := cmd tests models modules routers build services tools
 | 
			
		||||
GO_DIRS := build cmd models modules routers services tests
 | 
			
		||||
WEB_DIRS := web_src/js web_src/css
 | 
			
		||||
 | 
			
		||||
GO_SOURCES := $(wildcard *.go)
 | 
			
		||||
@@ -219,7 +219,6 @@ help:
 | 
			
		||||
	@echo " - tidy                             run go mod tidy"
 | 
			
		||||
	@echo " - test[\#TestSpecificName]    	    run unit test"
 | 
			
		||||
	@echo " - test-sqlite[\#TestSpecificName]  run integration test for sqlite"
 | 
			
		||||
	@echo " - pr#<index>                       build and start gitea from a PR with integration test data loaded"
 | 
			
		||||
 | 
			
		||||
.PHONY: go-check
 | 
			
		||||
go-check:
 | 
			
		||||
@@ -353,7 +352,7 @@ lint-backend: golangci-lint vet editorconfig-checker
 | 
			
		||||
 | 
			
		||||
.PHONY: watch
 | 
			
		||||
watch:
 | 
			
		||||
	bash tools/watch.sh
 | 
			
		||||
	bash build/watch.sh
 | 
			
		||||
 | 
			
		||||
.PHONY: watch-frontend
 | 
			
		||||
watch-frontend: node-check node_modules
 | 
			
		||||
@@ -939,10 +938,6 @@ generate-manpage:
 | 
			
		||||
	@gzip -9 man/man1/gitea.1 && echo man/man1/gitea.1.gz created
 | 
			
		||||
	@#TODO A small script that formats config-cheat-sheet.en-us.md nicely for use as a config man page
 | 
			
		||||
 | 
			
		||||
.PHONY: pr\#%
 | 
			
		||||
pr\#%: clean-all
 | 
			
		||||
	$(GO) run contrib/pr/checkout.go $*
 | 
			
		||||
 | 
			
		||||
.PHONY: golangci-lint
 | 
			
		||||
golangci-lint:
 | 
			
		||||
	$(GO) run $(GOLANGCI_LINT_PACKAGE) run
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,6 @@
 | 
			
		||||
// Copyright 2023 The Gitea Authors. All rights reserved.
 | 
			
		||||
// SPDX-License-Identifier: MIT
 | 
			
		||||
 | 
			
		||||
//go:build ignore
 | 
			
		||||
 | 
			
		||||
package main
 | 
			
		||||
 
 | 
			
		||||
@@ -65,7 +65,6 @@ func newFileCollector(fileFilter string, batchSize int) (*fileCollector, error)
 | 
			
		||||
			"modules",
 | 
			
		||||
			"routers",
 | 
			
		||||
			"services",
 | 
			
		||||
			"tools",
 | 
			
		||||
		}
 | 
			
		||||
		co.includePatterns = append(co.includePatterns, regexp.MustCompile(`.*\.go$`))
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										20
									
								
								build/test-echo.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								build/test-echo.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
// Copyright 2023 The Gitea Authors. All rights reserved.
 | 
			
		||||
// SPDX-License-Identifier: MIT
 | 
			
		||||
 | 
			
		||||
//go:build ignore
 | 
			
		||||
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
	"os"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	_, err := io.Copy(os.Stdout, os.Stdin)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		fmt.Fprintf(os.Stderr, "Error: %v", err)
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -1,2 +0,0 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
su git -c "/home/git/gogs/scripts/gogs_supervisord.sh restart"
 | 
			
		||||
@@ -1,2 +0,0 @@
 | 
			
		||||
DROP DATABASE IF EXISTS gitea;
 | 
			
		||||
CREATE DATABASE IF NOT EXISTS gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
 | 
			
		||||
@@ -1,267 +0,0 @@
 | 
			
		||||
// Copyright 2020 The Gitea Authors. All rights reserved.
 | 
			
		||||
// SPDX-License-Identifier: MIT
 | 
			
		||||
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
Checkout a PR and load the tests data into sqlite database
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"flag"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"log"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"os"
 | 
			
		||||
	"os/exec"
 | 
			
		||||
	"os/user"
 | 
			
		||||
	"path"
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
	"runtime"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/models/db"
 | 
			
		||||
	"code.gitea.io/gitea/models/unittest"
 | 
			
		||||
	gitea_git "code.gitea.io/gitea/modules/git"
 | 
			
		||||
	"code.gitea.io/gitea/modules/graceful"
 | 
			
		||||
	"code.gitea.io/gitea/modules/markup"
 | 
			
		||||
	"code.gitea.io/gitea/modules/markup/external"
 | 
			
		||||
	repo_module "code.gitea.io/gitea/modules/repository"
 | 
			
		||||
	"code.gitea.io/gitea/modules/setting"
 | 
			
		||||
	"code.gitea.io/gitea/modules/util"
 | 
			
		||||
	"code.gitea.io/gitea/routers"
 | 
			
		||||
	markup_service "code.gitea.io/gitea/services/markup"
 | 
			
		||||
 | 
			
		||||
	"github.com/go-git/go-git/v5"
 | 
			
		||||
	"github.com/go-git/go-git/v5/config"
 | 
			
		||||
	"github.com/go-git/go-git/v5/plumbing"
 | 
			
		||||
	"xorm.io/xorm"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var codeFilePath = "contrib/pr/checkout.go"
 | 
			
		||||
 | 
			
		||||
func runPR() {
 | 
			
		||||
	log.Printf("[PR] Starting gitea ...\n")
 | 
			
		||||
	curDir, err := os.Getwd()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
	setting.SetCustomPathAndConf("", "", "")
 | 
			
		||||
	setting.InitProviderAllowEmpty()
 | 
			
		||||
	setting.LoadCommonSettings()
 | 
			
		||||
 | 
			
		||||
	setting.RepoRootPath, err = os.MkdirTemp(os.TempDir(), "repos")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Fatalf("TempDir: %v\n", err)
 | 
			
		||||
	}
 | 
			
		||||
	setting.AppDataPath, err = os.MkdirTemp(os.TempDir(), "appdata")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Fatalf("TempDir: %v\n", err)
 | 
			
		||||
	}
 | 
			
		||||
	setting.AppWorkPath = curDir
 | 
			
		||||
	setting.StaticRootPath = curDir
 | 
			
		||||
	setting.GravatarSource = "https://secure.gravatar.com/avatar/"
 | 
			
		||||
	setting.AppURL = "http://localhost:8080/"
 | 
			
		||||
	setting.HTTPPort = "8080"
 | 
			
		||||
	setting.SSH.Domain = "localhost"
 | 
			
		||||
	setting.SSH.Port = 3000
 | 
			
		||||
	setting.InstallLock = true
 | 
			
		||||
	setting.SecretKey = "9pCviYTWSb"
 | 
			
		||||
	setting.InternalToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE0OTI3OTU5ODN9.OQkH5UmzID2XBdwQ9TAI6Jj2t1X-wElVTjbE7aoN4I8"
 | 
			
		||||
	curUser, err := user.Current()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
	setting.RunUser = curUser.Username
 | 
			
		||||
 | 
			
		||||
	log.Printf("[PR] Loading fixtures data ...\n")
 | 
			
		||||
	//models.LoadConfigs()
 | 
			
		||||
	/*
 | 
			
		||||
		setting.Database.Type = "sqlite3"
 | 
			
		||||
		setting.Database.Path = ":memory:"
 | 
			
		||||
		setting.Database.Timeout = 500
 | 
			
		||||
	*/
 | 
			
		||||
	dbCfg := setting.CfgProvider.Section("database")
 | 
			
		||||
	dbCfg.NewKey("DB_TYPE", "sqlite3")
 | 
			
		||||
	dbCfg.NewKey("PATH", ":memory:")
 | 
			
		||||
 | 
			
		||||
	routers.InitGitServices()
 | 
			
		||||
	setting.Database.LogSQL = true
 | 
			
		||||
	// x, err = xorm.NewEngine("sqlite3", "file::memory:?cache=shared")
 | 
			
		||||
 | 
			
		||||
	db.InitEngineWithMigration(context.Background(), func(_ *xorm.Engine) error {
 | 
			
		||||
		return nil
 | 
			
		||||
	})
 | 
			
		||||
	db.HasEngine = true
 | 
			
		||||
	// x.ShowSQL(true)
 | 
			
		||||
	err = unittest.InitFixtures(
 | 
			
		||||
		unittest.FixturesOptions{
 | 
			
		||||
			Dir: path.Join(curDir, "models/fixtures/"),
 | 
			
		||||
		},
 | 
			
		||||
	)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		fmt.Printf("Error initializing test database: %v\n", err)
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
	}
 | 
			
		||||
	unittest.LoadFixtures()
 | 
			
		||||
	util.RemoveAll(setting.RepoRootPath)
 | 
			
		||||
	util.RemoveAll(repo_module.LocalCopyPath())
 | 
			
		||||
	unittest.CopyDir(path.Join(curDir, "tests/gitea-repositories-meta"), setting.RepoRootPath)
 | 
			
		||||
 | 
			
		||||
	log.Printf("[PR] Setting up router\n")
 | 
			
		||||
	// routers.GlobalInit()
 | 
			
		||||
	external.RegisterRenderers()
 | 
			
		||||
	markup.Init(markup_service.ProcessorHelper())
 | 
			
		||||
	c := routers.NormalRoutes(graceful.GetManager().HammerContext())
 | 
			
		||||
 | 
			
		||||
	log.Printf("[PR] Ready for testing !\n")
 | 
			
		||||
	log.Printf("[PR] Login with user1, user2, user3, ... with pass: password\n")
 | 
			
		||||
	/*
 | 
			
		||||
		log.Info("Listen: %v://%s%s", setting.Protocol, listenAddr, setting.AppSubURL)
 | 
			
		||||
 | 
			
		||||
		if setting.LFS.StartServer {
 | 
			
		||||
			log.Info("LFS server enabled")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if setting.EnablePprof {
 | 
			
		||||
			go func() {
 | 
			
		||||
				log.Info("Starting pprof server on localhost:6060")
 | 
			
		||||
				log.Info("%v", http.ListenAndServe("localhost:6060", nil))
 | 
			
		||||
			}()
 | 
			
		||||
		}
 | 
			
		||||
	*/
 | 
			
		||||
 | 
			
		||||
	// Start the server
 | 
			
		||||
	http.ListenAndServe(":8080", c)
 | 
			
		||||
 | 
			
		||||
	log.Printf("[PR] Cleaning up ...\n")
 | 
			
		||||
	/*
 | 
			
		||||
		if err = util.RemoveAll(setting.Indexer.IssuePath); err != nil {
 | 
			
		||||
			fmt.Printf("util.RemoveAll: %v\n", err)
 | 
			
		||||
			os.Exit(1)
 | 
			
		||||
		}
 | 
			
		||||
		if err = util.RemoveAll(setting.Indexer.RepoPath); err != nil {
 | 
			
		||||
			fmt.Printf("Unable to remove repo indexer: %v\n", err)
 | 
			
		||||
			os.Exit(1)
 | 
			
		||||
		}
 | 
			
		||||
	*/
 | 
			
		||||
	if err = util.RemoveAll(setting.RepoRootPath); err != nil {
 | 
			
		||||
		log.Fatalf("util.RemoveAll: %v\n", err)
 | 
			
		||||
	}
 | 
			
		||||
	if err = util.RemoveAll(setting.AppDataPath); err != nil {
 | 
			
		||||
		log.Fatalf("util.RemoveAll: %v\n", err)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	runPRFlag := flag.Bool("run", false, "Run the PR code")
 | 
			
		||||
	flag.Parse()
 | 
			
		||||
	if *runPRFlag {
 | 
			
		||||
		runPR()
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// To force checkout (e.g. Windows complains about unclean work tree) set env variable FORCE=true
 | 
			
		||||
	force, err := strconv.ParseBool(os.Getenv("FORCE"))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		force = false
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Otherwise checkout PR
 | 
			
		||||
	if len(os.Args) != 2 {
 | 
			
		||||
		log.Fatal("Need only one arg: the PR number")
 | 
			
		||||
	}
 | 
			
		||||
	pr := os.Args[1]
 | 
			
		||||
 | 
			
		||||
	codeFilePath = filepath.FromSlash(codeFilePath) // Convert to running OS
 | 
			
		||||
 | 
			
		||||
	// Copy this file if it will not exist in the PR branch
 | 
			
		||||
	dat, err := os.ReadFile(codeFilePath)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Fatalf("Failed to cache this code file : %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	repo, err := git.PlainOpen(".")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Fatalf("Failed to open the repo : %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Find remote upstream
 | 
			
		||||
	remotes, err := repo.Remotes()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Fatalf("Failed to list remotes of repo : %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	remoteUpstream := "origin" // Default
 | 
			
		||||
	for _, r := range remotes {
 | 
			
		||||
		if r.Config().URLs[0] == "https://github.com/go-gitea/gitea.git" ||
 | 
			
		||||
			r.Config().URLs[0] == "https://github.com/go-gitea/gitea" ||
 | 
			
		||||
			r.Config().URLs[0] == "git@github.com:go-gitea/gitea.git" { // fetch at index 0
 | 
			
		||||
			remoteUpstream = r.Config().Name
 | 
			
		||||
			break
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	branch := fmt.Sprintf("pr-%s-%d", pr, time.Now().Unix())
 | 
			
		||||
	branchRef := plumbing.NewBranchReferenceName(branch)
 | 
			
		||||
 | 
			
		||||
	log.Printf("Fetching PR #%s in %s\n", pr, branch)
 | 
			
		||||
	if runtime.GOOS == "windows" {
 | 
			
		||||
		// Use git cli command for windows
 | 
			
		||||
		runCmd("git", "fetch", remoteUpstream, fmt.Sprintf("pull/%s/head:%s", pr, branch))
 | 
			
		||||
	} else {
 | 
			
		||||
		ref := fmt.Sprintf("%s%s/head:%s", gitea_git.PullPrefix, pr, branchRef)
 | 
			
		||||
		err = repo.Fetch(&git.FetchOptions{
 | 
			
		||||
			RemoteName: remoteUpstream,
 | 
			
		||||
			RefSpecs: []config.RefSpec{
 | 
			
		||||
				config.RefSpec(ref),
 | 
			
		||||
			},
 | 
			
		||||
		})
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatalf("Failed to fetch %s from %s : %v", ref, remoteUpstream, err)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tree, err := repo.Worktree()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Fatalf("Failed to parse git tree : %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	log.Printf("Checkout PR #%s in %s\n", pr, branch)
 | 
			
		||||
	err = tree.Checkout(&git.CheckoutOptions{
 | 
			
		||||
		Branch: branchRef,
 | 
			
		||||
		Force:  force,
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Fatalf("Failed to checkout %s : %v", branch, err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Copy this file if not exist
 | 
			
		||||
	if _, err := os.Stat(codeFilePath); os.IsNotExist(err) {
 | 
			
		||||
		err = os.MkdirAll(filepath.Dir(codeFilePath), 0o755)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatalf("Failed to duplicate this code file in PR : %v", err)
 | 
			
		||||
		}
 | 
			
		||||
		err = os.WriteFile(codeFilePath, dat, 0o644)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatalf("Failed to duplicate this code file in PR : %v", err)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	// Force build of js, css, bin, ...
 | 
			
		||||
	runCmd("make", "build")
 | 
			
		||||
	// Start with integration test
 | 
			
		||||
	runCmd("go", "run", "-mod", "vendor", "-tags", "sqlite sqlite_unlock_notify", codeFilePath, "-run")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func runCmd(cmd ...string) {
 | 
			
		||||
	log.Printf("Executing : %s ...\n", cmd)
 | 
			
		||||
	c := exec.Command(cmd[0], cmd[1:]...)
 | 
			
		||||
	c.Stdout = os.Stdout
 | 
			
		||||
	c.Stderr = os.Stderr
 | 
			
		||||
	if err := c.Start(); err != nil {
 | 
			
		||||
		log.Panicln(err)
 | 
			
		||||
	}
 | 
			
		||||
	if err := c.Wait(); err != nil {
 | 
			
		||||
		log.Panicln(err)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -111,6 +111,6 @@ ENABLED = true
 | 
			
		||||
[markup.html]
 | 
			
		||||
ENABLED = true
 | 
			
		||||
FILE_EXTENSIONS = .html
 | 
			
		||||
RENDER_COMMAND = `go run tools/external_renderer.go`
 | 
			
		||||
RENDER_COMMAND = `go run build/test-echo.go`
 | 
			
		||||
IS_INPUT_FILE = false
 | 
			
		||||
RENDER_CONTENT_MODE=sanitized
 | 
			
		||||
 
 | 
			
		||||
@@ -1,23 +0,0 @@
 | 
			
		||||
// Copyright 2017 The Gitea Authors. All rights reserved.
 | 
			
		||||
// SPDX-License-Identifier: MIT
 | 
			
		||||
 | 
			
		||||
// gobuild: external_renderer
 | 
			
		||||
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
	"os"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	if len(os.Args) > 1 {
 | 
			
		||||
		fmt.Print(os.Args[1])
 | 
			
		||||
	} else {
 | 
			
		||||
		_, err := io.Copy(os.Stdout, os.Stdin)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			fmt.Println(err)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user