diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml
index 0a9062b5ea..e37779f96d 100644
--- a/.mokogitea/manifest.xml
+++ b/.mokogitea/manifest.xml
@@ -4,7 +4,7 @@
MokoGitea
MokoConsulting
Moko fork of Gitea - adding project board REST API endpoints and custom enhancements
- 06.19.00
+ 06.18.03
v1.26.1+MOKO
GNU General Public License v3
diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml
index 8c7582d077..d162991038 100644
--- a/.mokogitea/workflows/issue-branch.yml
+++ b/.mokogitea/workflows/issue-branch.yml
@@ -5,7 +5,7 @@
# FILE INFORMATION
# DEFGROUP: Gitea.Workflow
# INGROUP: mokoplatform.Automation
-# VERSION: 06.19.00
+# VERSION: 06.18.03
# BRIEF: Auto-create feature branch when an issue is opened
name: "Universal: Issue Branch"
diff --git a/models/repo/repo_test.go b/models/repo/repo_test.go
index 7cf9d6a8a6..7bf3fb97a4 100644
--- a/models/repo/repo_test.go
+++ b/models/repo/repo_test.go
@@ -212,6 +212,8 @@ func TestIsUsableRepoName(t *testing.T) {
assert.NoError(t, IsUsableRepoName("a"))
assert.NoError(t, IsUsableRepoName("-1_."))
assert.NoError(t, IsUsableRepoName(".profile"))
+ assert.NoError(t, IsUsableRepoName(".mokogitea"))
+ assert.NoError(t, IsUsableRepoName(".github"))
assert.Error(t, IsUsableRepoName("-"))
assert.Error(t, IsUsableRepoName("🌞"))
diff --git a/routers/web/org/wiki.go b/routers/web/org/wiki.go
index 8a7280b31c..dc76d34747 100644
--- a/routers/web/org/wiki.go
+++ b/routers/web/org/wiki.go
@@ -158,13 +158,24 @@ func Wiki(ctx *context.Context) {
}
// findOrgWikiCommit locates the profile repo's wiki and returns its HEAD commit.
-// The org wiki lives in the .wiki.git sidecar of the profile repo (e.g. .profile.wiki.git).
+// The org wiki lives in the .wiki.git sidecar of the profile repo (e.g. .mokogitea.wiki.git).
+// Tries fallback repo names (.profile, .github) if the primary doesn't exist.
func findOrgWikiCommit(ctx *context.Context, orgID int64, repoName string) (*repo_model.Repository, *git.Commit) {
- dbRepo, err := repo_model.GetRepositoryByName(ctx, orgID, repoName)
- if err != nil {
- if !repo_model.IsErrRepoNotExist(err) {
- log.Error("findOrgWikiCommit: GetRepositoryByName(%d, %s): %v", orgID, repoName, err)
+ namesToTry := shared_user.ProfileRepoFallbacks(repoName)
+
+ var dbRepo *repo_model.Repository
+ var err error
+ for _, name := range namesToTry {
+ dbRepo, err = repo_model.GetRepositoryByName(ctx, orgID, name)
+ if err == nil {
+ break
}
+ if !repo_model.IsErrRepoNotExist(err) {
+ log.Error("findOrgWikiCommit: GetRepositoryByName(%d, %s): %v", orgID, name, err)
+ return nil, nil
+ }
+ }
+ if dbRepo == nil {
return nil, nil
}
diff --git a/routers/web/shared/user/header.go b/routers/web/shared/user/header.go
index abcd848697..9b75cbc724 100644
--- a/routers/web/shared/user/header.go
+++ b/routers/web/shared/user/header.go
@@ -93,17 +93,27 @@ func prepareContextForProfileBigAvatar(ctx *context.Context) {
func FindOwnerProfileReadme(ctx *context.Context, doer *user_model.User, optProfileRepoName ...string) (profileDbRepo *repo_model.Repository, profileReadmeBlob *git.Blob) {
profileRepoName := util.OptionalArg(optProfileRepoName, RepoNameProfile)
- profileDbRepo, err := repo_model.GetRepositoryByName(ctx, ctx.ContextUser.ID, profileRepoName)
- if err != nil {
- if !repo_model.IsErrRepoNotExist(err) {
- log.Error("FindOwnerProfileReadme failed to GetRepositoryByName: %v", err)
+
+ namesToTry := ProfileRepoFallbacks(profileRepoName)
+
+ var err error
+ for _, name := range namesToTry {
+ profileDbRepo, err = repo_model.GetRepositoryByName(ctx, ctx.ContextUser.ID, name)
+ if err == nil {
+ break
}
+ if !repo_model.IsErrRepoNotExist(err) {
+ log.Error("FindOwnerProfileReadme failed to GetRepositoryByName(%s): %v", name, err)
+ return nil, nil
+ }
+ }
+ if profileDbRepo == nil {
return nil, nil
}
perm, err := access_model.GetDoerRepoPermission(ctx, profileDbRepo, doer)
if err != nil {
- log.Error("FindOwnerProfileReadme failed to GetRepositoryByName: %v", err)
+ log.Error("FindOwnerProfileReadme failed to GetDoerRepoPermission: %v", err)
return nil, nil
}
if profileDbRepo.IsEmpty || !perm.CanRead(unit.TypeCode) {
@@ -135,12 +145,29 @@ type PrepareOwnerHeaderResult struct {
}
const (
- RepoNameProfilePrivate = ".profile-private"
- RepoNameProfile = ".profile"
- RepoNameWikiPublic = ".profile"
- RepoNameWikiPrivate = ".profile-private"
+ RepoNameProfile = ".mokogitea"
+ RepoNameProfilePrivate = ".mokogitea-private"
+ RepoNameWikiPublic = ".mokogitea"
+ RepoNameWikiPrivate = ".mokogitea-private"
)
+// profileFallbacks maps primary repo names to their fallback alternatives.
+// Priority: .mokogitea > .profile > .github
+var profileFallbacks = map[string][]string{
+ RepoNameProfile: {".profile", ".github"},
+ RepoNameProfilePrivate: {".profile-private", ".github-private"},
+}
+
+// ProfileRepoFallbacks returns the list of repo names to try for a given
+// profile repo name, with the primary name first and fallbacks after.
+func ProfileRepoFallbacks(repoName string) []string {
+ names := []string{repoName}
+ if fallbacks, ok := profileFallbacks[repoName]; ok {
+ names = append(names, fallbacks...)
+ }
+ return names
+}
+
func RenderUserOrgHeader(ctx *context.Context) (result *PrepareOwnerHeaderResult, err error) {
ctx.Data["IsPackageEnabled"] = setting.Packages.Enabled
ctx.Data["IsRepoIndexerEnabled"] = setting.Indexer.RepoIndexerEnabled
@@ -210,10 +237,19 @@ func loadHeaderCount(ctx *context.Context) error {
}
// OrgWikiRepoExists checks whether a profile repo's wiki exists and has content.
+// Tries fallback repo names (.mokogitea, .github) if the primary doesn't exist.
func OrgWikiRepoExists(ctx *context.Context, ownerID int64, repoName string) bool {
- dbRepo, err := repo_model.GetRepositoryByName(ctx, ownerID, repoName)
- if err != nil {
- log.Trace("OrgWikiRepoExists: repo %s not found for owner %d: %v", repoName, ownerID, err)
+ namesToTry := ProfileRepoFallbacks(repoName)
+
+ var dbRepo *repo_model.Repository
+ var err error
+ for _, name := range namesToTry {
+ dbRepo, err = repo_model.GetRepositoryByName(ctx, ownerID, name)
+ if err == nil {
+ break
+ }
+ }
+ if dbRepo == nil {
return false
}
wikiRepo := dbRepo.WikiStorageRepo()