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

Function updateRepository

internal/database/repo.go:1568–1626  ·  view source on GitHub ↗
(e Engine, repo *Repository, visibilityChanged bool)

Source from the content-addressed store, hash-verified

1566}
1567
1568func updateRepository(e Engine, repo *Repository, visibilityChanged bool) (err error) {
1569 repo.LowerName = strings.ToLower(repo.Name)
1570
1571 if len(repo.Description) > 512 {
1572 repo.Description = repo.Description[:512]
1573 }
1574 if len(repo.Website) > 255 {
1575 repo.Website = repo.Website[:255]
1576 }
1577
1578 if _, err = e.ID(repo.ID).AllCols().Update(repo); err != nil {
1579 return errors.Newf("update: %v", err)
1580 }
1581
1582 if visibilityChanged {
1583 if err = repo.getOwner(e); err != nil {
1584 return errors.Newf("getOwner: %v", err)
1585 }
1586 if repo.Owner.IsOrganization() {
1587 // Organization repository need to recalculate access table when visibility is changed
1588 if err = repo.recalculateTeamAccesses(e, 0); err != nil {
1589 return errors.Newf("recalculateTeamAccesses: %v", err)
1590 }
1591 }
1592
1593 // Create/Remove git-daemon-export-ok for git-daemon
1594 daemonExportFile := path.Join(repo.RepoPath(), "git-daemon-export-ok")
1595 if repo.IsPrivate && com.IsExist(daemonExportFile) {
1596 if err = os.Remove(daemonExportFile); err != nil {
1597 log.Error("Failed to remove %s: %v", daemonExportFile, err)
1598 }
1599 } else if !repo.IsPrivate && !com.IsExist(daemonExportFile) {
1600 if f, err := os.Create(daemonExportFile); err != nil {
1601 log.Error("Failed to create %s: %v", daemonExportFile, err)
1602 } else {
1603 f.Close()
1604 }
1605 }
1606
1607 forkRepos, err := getRepositoriesByForkID(e, repo.ID)
1608 if err != nil {
1609 return errors.Newf("getRepositoriesByForkID: %v", err)
1610 }
1611 for i := range forkRepos {
1612 forkRepos[i].IsPrivate = repo.IsPrivate
1613 forkRepos[i].IsUnlisted = repo.IsUnlisted
1614 if err = updateRepository(e, forkRepos[i], true); err != nil {
1615 return errors.Newf("updateRepository[%d]: %v", forkRepos[i].ID, err)
1616 }
1617 }
1618
1619 // Change visibility of generated actions
1620 if _, err = e.Where("repo_id = ?", repo.ID).Cols("is_private").Update(&Action{IsPrivate: repo.IsPrivate || repo.IsUnlisted}); err != nil {
1621 return errors.Newf("change action visibility of repository: %v", err)
1622 }
1623 }
1624
1625 return nil

Callers 2

initRepositoryFunction · 0.85
UpdateRepositoryFunction · 0.85

Calls 11

getRepositoriesByForkIDFunction · 0.85
getOwnerMethod · 0.80
IsOrganizationMethod · 0.80
RepoPathMethod · 0.80
RemoveMethod · 0.80
WhereMethod · 0.80
UpdateMethod · 0.65
IDMethod · 0.65
ErrorMethod · 0.45
CreateMethod · 0.45

Tested by

no test coverage detected