mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08: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