mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09:00 
			
		
		
		
	#3233 code cleanup and minor issue fix
This commit is contained in:
		| @@ -18,7 +18,7 @@ github.com/go-xorm/core = commit:5bf745d | ||||
| github.com/go-xorm/xorm = commit:c6c7056 | ||||
| github.com/gogits/chardet = commit:2404f77 | ||||
| github.com/gogits/cron = commit:7f3990a | ||||
| github.com/gogits/git-module = commit:18dd87d | ||||
| github.com/gogits/git-module = commit:efc90b5 | ||||
| github.com/gogits/go-gogs-client = commit:d1020b4 | ||||
| github.com/issue9/identicon = commit:d36b545 | ||||
| github.com/jaytaylor/html2text = commit:52d9b78 | ||||
|   | ||||
| @@ -3,7 +3,7 @@ Gogs - Go Git Service [ | ||||
|  | ||||
| ##### Current tip version: 0.9.72 (see [Releases](https://github.com/gogits/gogs/releases) for binary versions) | ||||
| ##### Current tip version: 0.9.73 (see [Releases](https://github.com/gogits/gogs/releases) for binary versions) | ||||
|  | ||||
| | Web | UI  | Preview  | | ||||
| |:-------------:|:-------:|:-------:| | ||||
|   | ||||
| @@ -87,7 +87,7 @@ func checkVersion() { | ||||
| 		{"github.com/go-macaron/toolbox", toolbox.Version, "0.1.0"}, | ||||
| 		{"gopkg.in/ini.v1", ini.Version, "1.8.4"}, | ||||
| 		{"gopkg.in/macaron.v1", macaron.Version, "1.1.7"}, | ||||
| 		{"github.com/gogits/git-module", git.Version, "0.3.4"}, | ||||
| 		{"github.com/gogits/git-module", git.Version, "0.3.5"}, | ||||
| 		{"github.com/gogits/go-gogs-client", gogs.Version, "0.10.3"}, | ||||
| 	} | ||||
| 	for _, c := range checkers { | ||||
|   | ||||
							
								
								
									
										2
									
								
								glide.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								glide.lock
									
									
									
										generated
									
									
									
								
							| @@ -41,7 +41,7 @@ imports: | ||||
| - name: github.com/gogits/cron | ||||
|   version: 7f3990acf1833faa5ebd0e86f0a4c72a4b5eba3c | ||||
| - name: github.com/gogits/git-module | ||||
|   version: 18dd87dc5eac9ee7076133c8363803f2192d5713 | ||||
|   version: efc90b5ea1f7b7e404673dcc19674b2a6856e0d3 | ||||
| - name: github.com/gogits/go-gogs-client | ||||
|   version: d1020b4da5474f7533f5b11084dcfd5536cf2e71 | ||||
| - name: github.com/issue9/identicon | ||||
|   | ||||
							
								
								
									
										2
									
								
								gogs.go
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								gogs.go
									
									
									
									
									
								
							| @@ -17,7 +17,7 @@ import ( | ||||
| 	"github.com/gogits/gogs/modules/setting" | ||||
| ) | ||||
|  | ||||
| const APP_VER = "0.9.72.0811" | ||||
| const APP_VER = "0.9.73.0811" | ||||
|  | ||||
| func init() { | ||||
| 	runtime.GOMAXPROCS(runtime.NumCPU()) | ||||
|   | ||||
							
								
								
									
										117
									
								
								models/repo.go
									
									
									
									
									
								
							
							
						
						
									
										117
									
								
								models/repo.go
									
									
									
									
									
								
							| @@ -659,47 +659,21 @@ type MigrateRepoOptions struct { | ||||
| 	RemoteAddr  string | ||||
| } | ||||
|  | ||||
| func isGitRepoURL(repoURL string, timeout time.Duration) bool { | ||||
| 	cmd := git.NewCommand("ls-remote") | ||||
| 	cmd.AddArguments("-q", "-h", repoURL, "HEAD") | ||||
| 	res, err := cmd.RunTimeout(timeout) | ||||
| 	if err != nil { | ||||
| 		return false | ||||
| 	} | ||||
| 	if strings.Contains(res, "fatal") || strings.Contains(res, "not found") { | ||||
| 		return false | ||||
| 	} | ||||
| 	return true | ||||
| } | ||||
| /* | ||||
| 	GitHub, GitLab, Gogs: *.wiki.git | ||||
| 	BitBucket: *.git/wiki | ||||
| */ | ||||
| var commonWikiURLSuffixes = []string{".wiki.git", ".git/wiki"} | ||||
|  | ||||
| func wikiRemoteURL(remote string, timeout time.Duration) string { | ||||
| 	wikiRemoteStd := remote | ||||
| 	wikiRemoteBitBucket := remote | ||||
| 	/* | ||||
| 		GitHub, GitLab, Gogs: NAME.wiki.git | ||||
| 		BitBucket: NAME.git/wiki | ||||
| 	*/ | ||||
| 	gitSuffixed := strings.HasSuffix(remote, ".git") | ||||
| 	if gitSuffixed { | ||||
| 		wikiRemoteStd = wikiRemoteStd[:len(wikiRemoteStd)-4] | ||||
| 		wikiRemoteBitBucket += "/wiki" | ||||
| 	} else { | ||||
| 		wikiRemoteBitBucket += ".git/wiki" | ||||
| 	} | ||||
| 	wikiRemoteStd += ".wiki.git" | ||||
| 	isBB := strings.Contains(remote, "bitbucket") | ||||
| 	if isBB { | ||||
| 		if isGitRepoURL(wikiRemoteBitBucket, timeout) { | ||||
| 			return wikiRemoteBitBucket | ||||
| 		} else if isGitRepoURL(wikiRemoteStd, timeout) { | ||||
| 			return wikiRemoteStd | ||||
| // wikiRemoteURL returns accessible repository URL for wiki if exists. | ||||
| // Otherwise, it returns an empty string. | ||||
| func wikiRemoteURL(remote string) string { | ||||
| 	remote = strings.TrimSuffix(remote, ".git") | ||||
| 	for _, suffix := range commonWikiURLSuffixes { | ||||
| 		wikiURL := remote + suffix | ||||
| 		if git.IsRepoURLAccessible(wikiURL) { | ||||
| 			return wikiURL | ||||
| 		} | ||||
| 		return "" | ||||
| 	} | ||||
| 	if isGitRepoURL(wikiRemoteStd, timeout) { | ||||
| 		return wikiRemoteStd | ||||
| 	} else if isGitRepoURL(wikiRemoteBitBucket, timeout) { | ||||
| 		return wikiRemoteBitBucket | ||||
| 	} | ||||
| 	return "" | ||||
| } | ||||
| @@ -733,25 +707,26 @@ func MigrateRepository(u *User, opts MigrateRepoOptions) (*Repository, error) { | ||||
| 		repo.NumWatches = 1 | ||||
| 	} | ||||
|  | ||||
| 	gitTimeout := time.Duration(setting.Git.Timeout.Migrate) * time.Second | ||||
| 	migrateTimeout := time.Duration(setting.Git.Timeout.Migrate) * time.Second | ||||
|  | ||||
| 	os.RemoveAll(repoPath) | ||||
| 	if err = git.Clone(opts.RemoteAddr, repoPath, git.CloneRepoOptions{ | ||||
| 		Mirror:  true, | ||||
| 		Quiet:   true, | ||||
| 		Timeout: gitTimeout, | ||||
| 		Timeout: migrateTimeout, | ||||
| 	}); err != nil { | ||||
| 		return repo, fmt.Errorf("Clone: %v", err) | ||||
| 	} | ||||
|  | ||||
| 	wikiRemotePath := wikiRemoteURL(opts.RemoteAddr, gitTimeout) | ||||
| 	if wikiRemotePath != "" { | ||||
| 	wikiRemotePath := wikiRemoteURL(opts.RemoteAddr) | ||||
| 	if len(wikiRemotePath) > 0 { | ||||
| 		os.RemoveAll(wikiPath) | ||||
| 		if err = git.Clone(wikiRemotePath, wikiPath, git.CloneRepoOptions{ | ||||
| 			Mirror:  true, | ||||
| 			Quiet:   true, | ||||
| 			Timeout: gitTimeout, | ||||
| 			Timeout: migrateTimeout, | ||||
| 		}); err != nil { | ||||
| 			log.Info("Clone wiki failed: %v", err) | ||||
| 			log.Info("Clone wiki: %v", err) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| @@ -797,40 +772,38 @@ func MigrateRepository(u *User, opts MigrateRepoOptions) (*Repository, error) { | ||||
| 	return CleanUpMigrateInfo(repo) | ||||
| } | ||||
|  | ||||
| // Finish migrating repository with things that don't need to be done for mirrors. | ||||
| func CleanUpMigrateInfo(repo *Repository) (*Repository, error) { | ||||
| 	repoPath := repo.RepoPath() | ||||
| 	hasWiki := repo.HasWiki() | ||||
|  | ||||
| 	if err := createUpdateHook(repoPath); err != nil { | ||||
| 		return repo, fmt.Errorf("createUpdateHook: %v", err) | ||||
| 	} | ||||
| 	if hasWiki { | ||||
| 		if err := createUpdateHook(repoPath); err != nil { | ||||
| 			return repo, fmt.Errorf("createUpdateHook: %v", err) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// Clean up mirror info which prevents "push --all". | ||||
| 	// This also removes possible user credentials. | ||||
| 	configPath := repo.GitConfigPath() | ||||
| // cleanUpMigrateGitConfig removes mirror info which prevents "push --all". | ||||
| // This also removes possible user credentials. | ||||
| func cleanUpMigrateGitConfig(configPath string) error { | ||||
| 	cfg, err := ini.Load(configPath) | ||||
| 	if err != nil { | ||||
| 		return repo, fmt.Errorf("open config file: %v", err) | ||||
| 		return fmt.Errorf("open config file: %v", err) | ||||
| 	} | ||||
| 	cfg.DeleteSection("remote \"origin\"") | ||||
| 	if err = cfg.SaveToIndent(configPath, "\t"); err != nil { | ||||
| 		return repo, fmt.Errorf("save config file: %v", err) | ||||
| 		return fmt.Errorf("save config file: %v", err) | ||||
| 	} | ||||
| 	if hasWiki { | ||||
| 		wikiConfigPath := filepath.Join(repo.WikiPath(), "config") | ||||
| 		cfg, err = ini.Load(wikiConfigPath) | ||||
| 		if err != nil { | ||||
| 			return repo, fmt.Errorf("open wiki config file: %v", err) | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // Finish migrating repository and/or wiki with things that don't need to be done for mirrors. | ||||
| func CleanUpMigrateInfo(repo *Repository) (*Repository, error) { | ||||
| 	repoPath := repo.RepoPath() | ||||
| 	if err := createUpdateHook(repoPath); err != nil { | ||||
| 		return repo, fmt.Errorf("createUpdateHook: %v", err) | ||||
| 	} | ||||
| 	if repo.HasWiki() { | ||||
| 		if err := createUpdateHook(repo.WikiPath()); err != nil { | ||||
| 			return repo, fmt.Errorf("createUpdateHook (wiki): %v", err) | ||||
| 		} | ||||
| 		cfg.DeleteSection("remote \"origin\"") | ||||
| 		if err = cfg.SaveToIndent(wikiConfigPath, "\t"); err != nil { | ||||
| 			return repo, fmt.Errorf("save wiki config file: %v", err) | ||||
| 	} | ||||
|  | ||||
| 	if err := cleanUpMigrateGitConfig(repo.GitConfigPath()); err != nil { | ||||
| 		return repo, fmt.Errorf("cleanUpMigrateGitConfig: %v", err) | ||||
| 	} | ||||
| 	if repo.HasWiki() { | ||||
| 		if err := cleanUpMigrateGitConfig(path.Join(repo.WikiPath(), "config")); err != nil { | ||||
| 			return repo, fmt.Errorf("cleanUpMigrateGitConfig (wiki): %v", err) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
|   | ||||
| @@ -105,6 +105,8 @@ func (repo *Repository) InitWiki() error { | ||||
|  | ||||
| 	if err := git.InitRepository(repo.WikiPath(), true); err != nil { | ||||
| 		return fmt.Errorf("InitRepository: %v", err) | ||||
| 	} else if err = createUpdateHook(repo.WikiPath()); err != nil { | ||||
| 		return fmt.Errorf("createUpdateHook: %v", err) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|   | ||||
| @@ -223,7 +223,6 @@ func RepoAssignment(args ...bool) macaron.Handler { | ||||
| 		ctx.Data["IsRepositoryOwner"] = ctx.Repo.IsOwner() | ||||
| 		ctx.Data["IsRepositoryAdmin"] = ctx.Repo.IsAdmin() | ||||
| 		ctx.Data["IsRepositoryWriter"] = ctx.Repo.IsWriter() | ||||
| 		ctx.Data["IsRepositoryMirror"] = repo.IsMirror | ||||
|  | ||||
| 		ctx.Data["DisableSSH"] = setting.SSH.Disabled | ||||
| 		ctx.Data["CloneLink"] = repo.CloneLink() | ||||
|   | ||||
| @@ -1 +1 @@ | ||||
| 0.9.72.0811 | ||||
| 0.9.73.0811 | ||||
| @@ -6,7 +6,7 @@ | ||||
| 			<span class="mega-octicon octicon-book"></span> | ||||
| 			<h2>{{.i18n.Tr "repo.wiki.welcome"}}</h2> | ||||
| 			<p>{{.i18n.Tr "repo.wiki.welcome_desc"}}</p> | ||||
| 			{{if and .IsRepositoryWriter (not .IsRepositoryMirror)}} | ||||
| 			{{if and .IsRepositoryWriter (not .Repository.IsMirror)}} | ||||
| 				<a class="ui green button" href="{{.RepoLink}}/wiki/_new">{{.i18n.Tr "repo.wiki.create_first_page"}}</a> | ||||
| 			{{end}} | ||||
| 		</div> | ||||
|   | ||||
| @@ -46,7 +46,7 @@ | ||||
| 		</div> | ||||
| 		<div class="ui dividing header"> | ||||
| 			{{.title}} | ||||
| 			{{if and .IsRepositoryWriter (not .IsRepositoryMirror)}} | ||||
| 			{{if and .IsRepositoryWriter (not .Repository.IsMirror)}} | ||||
| 				<div class="ui right"> | ||||
| 					<a class="ui small button" href="{{.RepoLink}}/wiki/{{.PageURL}}/_edit">{{.i18n.Tr "repo.wiki.edit_page_button"}}</a> | ||||
| 					<a class="ui green small button" href="{{.RepoLink}}/wiki/_new">{{.i18n.Tr "repo.wiki.new_page_button"}}</a> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user