return RepoPath(repo.Owner.Name, repo.Name)
}
+func (repo *Repository) IsOwnedBy(u *User) bool {
+ return repo.OwnerId == u.Id
+}
+
// DescriptionHtml does special handles to description and return HTML string.
func (repo *Repository) DescriptionHtml() template.HTML {
sanitize := func(s string) string {
sess.Rollback()
return err
}
+
+ if repo.IsFork {
+ if _, err = sess.Exec("UPDATE `repository` SET num_forks = num_forks - 1 WHERE id = ?", repo.ForkId); err != nil {
+ sess.Rollback()
+ return err
+ }
+ }
if _, err = sess.Exec("UPDATE `user` SET num_repos = num_repos - 1 WHERE id = ?", uid); err != nil {
sess.Rollback()
LowerName: oldRepo.LowerName,
Description: oldRepo.Description,
IsPrivate: oldRepo.IsPrivate,
+ IsFork: true,
+ ForkId: oldRepo.Id,
}
if _, err = sess.Insert(repo); err != nil {
</a>
</li>
<li id="repo-header-fork">
- <a id="repo-header-fork-btn" href="{{.RepoLink}}/action/fork">
+ <a id="repo-header-fork-btn" {{if not .IsRepositoryOwner}} href="{{.RepoLink}}/action/fork"{{end}}>
<button class="btn btn-gray text-bold btn-radius">
<i class="octicon octicon-repo-forked"></i>{{.i18n.Tr "repo.fork"}}
<span class="num">{{.Repository.NumForks}}</span>
</button>
</a>
+
</li>
</ul>
</div>