MCPcopy Create free account
hub / github.com/gogs/gogs / createRepository

Function createRepository

internal/database/repo.go:1133–1198  ·  view source on GitHub ↗
(e *xorm.Session, doer, owner *User, repo *Repository)

Source from the content-addressed store, hash-verified

1131}
1132
1133func createRepository(e *xorm.Session, doer, owner *User, repo *Repository) (err error) {
1134 if err = isRepoNameAllowed(repo.Name); err != nil {
1135 return err
1136 }
1137
1138 has, err := isRepositoryExist(e, owner, repo.Name)
1139 if err != nil {
1140 return errors.Newf("IsRepositoryExist: %v", err)
1141 } else if has {
1142 return ErrRepoAlreadyExist{args: errutil.Args{"ownerID": owner.ID, "name": repo.Name}}
1143 }
1144
1145 if _, err = e.Insert(repo); err != nil {
1146 return err
1147 }
1148
1149 _, err = e.Exec(dbutil.Quote("UPDATE %s SET num_repos = num_repos + 1 WHERE id = ?", "user"), owner.ID)
1150 if err != nil {
1151 return errors.Wrap(err, "increase owned repository count")
1152 }
1153
1154 // Give access to all members in owner team.
1155 if owner.IsOrganization() {
1156 t, err := owner.getOwnerTeam(e)
1157 if err != nil {
1158 return errors.Newf("getOwnerTeam: %v", err)
1159 } else if err = t.addRepository(e, repo); err != nil {
1160 return errors.Newf("addRepository: %v", err)
1161 }
1162 } else {
1163 // Organization automatically called this in addRepository method.
1164 if err = repo.recalculateAccesses(e); err != nil {
1165 return errors.Newf("recalculateAccesses: %v", err)
1166 }
1167 }
1168
1169 if err = watchRepo(e, owner.ID, repo.ID, true); err != nil {
1170 return errors.Newf("watchRepo: %v", err)
1171 }
1172
1173 // FIXME: This is identical to Actions.NewRepo but we are not yet able to wrap
1174 // transaction with different ORM objects, should delete this once migrated to
1175 // GORM for this part of logic.
1176 newRepoAction := func(e Engine, doer *User, repo *Repository) (err error) {
1177 opType := ActionCreateRepo
1178 if repo.IsFork {
1179 opType = ActionForkRepo
1180 }
1181
1182 return notifyWatchers(e, &Action{
1183 ActUserID: doer.ID,
1184 ActUserName: doer.Name,
1185 OpType: opType,
1186 RepoID: repo.ID,
1187 RepoUserName: repo.Owner.Name,
1188 RepoName: repo.Name,
1189 IsPrivate: repo.IsPrivate || repo.IsUnlisted,
1190 CreatedUnix: time.Now().Unix(),

Callers 2

CreateRepositoryFunction · 0.85
ForkRepositoryFunction · 0.85

Calls 12

QuoteFunction · 0.92
isRepoNameAllowedFunction · 0.85
isRepositoryExistFunction · 0.85
watchRepoFunction · 0.85
notifyWatchersFunction · 0.85
InsertMethod · 0.80
ExecMethod · 0.80
IsOrganizationMethod · 0.80
getOwnerTeamMethod · 0.80
addRepositoryMethod · 0.80
recalculateAccessesMethod · 0.80
loadAttributesMethod · 0.45

Tested by

no test coverage detected