Version: v0.6.1 Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Mar 26, 2015 License: MIT Imports: 50 Imported by: 0




View Source
const (
	DIFF_LINE_PLAIN = iota + 1

Diff line types.

View Source
const (
	DIFF_FILE_ADD = iota + 1
View Source
const (
	IS_OPEN = iota + 1
View Source
const (
	FM_ASSIGN = iota + 1

Filter modes.

View Source
const DIFF_HEAD = "diff --git "
View Source
const (
	MAX_COMMITS int = 5
View Source
const OWNER_TEAM = "Owners"
View Source
const (
	SLACK_COLOR string = "#dd4b39"


View Source
var (
	// Same as Github. See
	IssueCloseKeywords  = []string{"close", "closes", "closed", "fix", "fixes", "fixed", "resolve", "resolves", "resolved"}
	IssueReopenKeywords = []string{"reopen", "reopens", "reopened"}

	IssueCloseKeywordsPat, IssueReopenKeywordsPat *regexp.Regexp
	IssueReferenceKeywordsPat                     *regexp.Regexp
View Source
var (
	ErrIssueNotExist       = errors.New("Issue does not exist")
	ErrLabelNotExist       = errors.New("Label does not exist")
	ErrMilestoneNotExist   = errors.New("Milestone does not exist")
	ErrWrongIssueCounter   = errors.New("Invalid number of issues for this milestone")
	ErrAttachmentNotExist  = errors.New("Attachment does not exist")
	ErrAttachmentNotLinked = errors.New("Attachment does not belong to this issue")
	ErrMissingIssueNumber  = errors.New("No issue number specified")
View Source
var (
	ErrAuthenticationAlreadyExist = errors.New("Authentication already exist")
	ErrAuthenticationNotExist     = errors.New("Authentication does not exist")
	ErrAuthenticationUserUsed     = errors.New("Authentication has been used by some users")
View Source
var (
	SMTPAuths  = []string{SMTP_PLAIN, SMTP_LOGIN}
View Source
var (
	HasEngine bool

	DbCfg struct {
		Type, Host, Name, User, Passwd, Path, SSLMode string

	EnableSQLite3 bool
View Source
var (
	ErrOauth2RecordNotExist = errors.New("OAuth2 record does not exist")
	ErrOauth2NotAssociated  = errors.New("OAuth2 is not associated with user")
View Source
var (
	ErrOrgNotExist      = errors.New("Organization does not exist")
	ErrTeamAlreadyExist = errors.New("Team already exist")
	ErrTeamNotExist     = errors.New("Team does not exist")
	ErrTeamNameIllegal  = errors.New("Team name contains illegal characters")
View Source
var (
	ErrKeyAlreadyExist = errors.New("Public key already exists")
	ErrKeyNotExist     = errors.New("Public key does not exist")
	ErrKeyUnableVerify = errors.New("Unable to verify public key")
View Source
var (
	ErrReleaseAlreadyExist = errors.New("Release already exist")
	ErrReleaseNotExist     = errors.New("Release does not exist")
View Source
var (
	ErrRepoAlreadyExist  = errors.New("Repository already exist")
	ErrRepoFileNotExist  = errors.New("Repository file does not exist")
	ErrRepoNameIllegal   = errors.New("Repository name contains illegal characters")
	ErrRepoFileNotLoaded = errors.New("Repository file not loaded")
	ErrMirrorNotExist    = errors.New("Mirror does not exist")
	ErrInvalidReference  = errors.New("Invalid reference specified")
View Source
var (
	ErrUserAlreadyExist      = errors.New("User already exist")
	ErrUserNotExist          = errors.New("User does not exist")
	ErrUserNotKeyOwner       = errors.New("User does not the owner of public key")
	ErrEmailAlreadyUsed      = errors.New("E-mail already used")
	ErrEmailNotExist         = errors.New("E-mail does not exist")
	ErrEmailNotActivated     = errors.New("E-mail address has not been activated")
	ErrUserNameIllegal       = errors.New("User name contains illegal characters")
	ErrLoginSourceNotExist   = errors.New("Login source does not exist")
	ErrLoginSourceNotActived = errors.New("Login source is not actived")
	ErrUnsupportedLoginType  = errors.New("Login source is unknown")
View Source
var (
	DescPattern = regexp.MustCompile(`https?://\S+`)
View Source
var (
	ErrAccessTokenNotExist = errors.New("Access token does not exist")
View Source
var (
	ErrNotImplemented = errors.New("Not implemented yet")
View Source
var (
	ErrWebhookNotExist = errors.New("Webhook does not exist")
View Source
var (
	Gitignores, Licenses []string
View Source
var LoginTypes = map[LoginType]string{
View Source
var (
	SSHPath string // SSH directory.



func AddEmailAddress added in v0.5.11

func AddEmailAddress(email *EmailAddress) error

func AddOauth2 added in v0.3.0

func AddOauth2(oa *Oauth2) error

func AddOrgUser added in v0.5.0

func AddOrgUser(orgId, uid int64) error

AddOrgUser adds new user to given organization.

func AddPublicKey

func AddPublicKey(key *PublicKey) (err error)

AddPublicKey adds new public key to database and authorized_keys file.

func AddTeamMember added in v0.5.0

func AddTeamMember(orgId, teamId, uid int64) error

AddTeamMember adds new member to given team of given organization.

func AddTeamRepo added in v0.6.0

func AddTeamRepo(orgID, teamID, repoID int64) error

AddTeamRepo adds new repository relation to team.

func AddUpdateTask added in v0.5.0

func AddUpdateTask(task *UpdateTask) error

func BindUserOauth2 added in v0.3.0

func BindUserOauth2(userId, oauthId int64) error

func ChangeMilestoneAssign added in v0.4.0

func ChangeMilestoneAssign(oldMid, mid int64, issue *Issue) (err error)

ChangeMilestoneAssign changes assignment of milestone for issue.

func ChangeMilestoneIssueStats added in v0.5.0

func ChangeMilestoneIssueStats(issue *Issue) error

ChangeMilestoneIssueStats updates the open/closed issues counter and progress for the milestone associated witht the given issue.

func ChangeMilestoneStatus added in v0.4.0

func ChangeMilestoneStatus(m *Milestone, isClosed bool) (err error)

ChangeMilestoneStatus changes the milestone open/closed status.

func ChangeOrgUserStatus added in v0.5.0

func ChangeOrgUserStatus(orgId, uid int64, public bool) error

ChangeOrgUserStatus changes public or private membership status.

func ChangeRepositoryName added in v0.3.0

func ChangeRepositoryName(userName, oldRepoName, newRepoName string) (err error)

ChangeRepositoryName changes all corresponding setting from old repository name to new one.

func ChangeUserName added in v0.3.0

func ChangeUserName(u *User, newUserName string) (err error)

ChangeUserName changes all corresponding setting from old user name to new one.

func CheckPublicKeyString added in v0.5.0

func CheckPublicKeyString(content string) (bool, error)

CheckPublicKeyString checks if the given public key string is recognized by SSH.

func CleanUnbindOauth added in v0.4.0

func CleanUnbindOauth() error

CleanUnbindOauth deletes all unbind OAuthes.

func CommitRepoAction

func CommitRepoAction(userId, repoUserId int64, userName, actEmail string,
	repoId int64, repoUserName, repoName string, refFullName string, commit *base.PushCommits, oldCommitId string, newCommitId string) error

CommitRepoAction adds new action for committing repository.

func CountNotices added in v0.5.5

func CountNotices() int64

CountNotices returns number of notices.

func CountOrganizations added in v0.5.0

func CountOrganizations() int64

CountOrganizations returns number of organizations.

func CountRepositories added in v0.5.0

func CountRepositories() int64

CountRepositories returns number of repositories.

func CountUsers added in v0.5.0

func CountUsers() int64

CountUsers returns number of users.

func CreateHookTask added in v0.5.0

func CreateHookTask(t *HookTask) error

CreateHookTask creates a new hook task, it handles conversion from Payload to PayloadContent.

func CreateNotice added in v0.5.5

func CreateNotice(tp NoticeType, desc string) error

CreateNotice creates new system notice.

func CreateRelease added in v0.3.0

func CreateRelease(gitRepo *git.Repository, rel *Release) error

CreateRelease creates a new release of repository.

func CreateRepositoryNotice added in v0.5.5

func CreateRepositoryNotice(desc string) error

CreateRepositoryNotice creates new system notice with type NOTICE_REPOSITORY.

func CreateSource added in v0.5.0

func CreateSource(source *LoginSource) error

func CreateUser added in v0.5.0

func CreateUser(u *User) error

CreateUser creates record of a new user.

func CreateWebhook added in v0.4.0

func CreateWebhook(w *Webhook) error

CreateWebhook creates a new web hook.

func DelLoginSource added in v0.4.0

func DelLoginSource(source *LoginSource) error

func DelUpdateTasksByUuid added in v0.5.0

func DelUpdateTasksByUuid(uuid string) error

func DeleteAccessTokenById added in v0.5.8

func DeleteAccessTokenById(id int64) error

DeleteAccessTokenById deletes access token by given ID.

func DeleteAttachment added in v0.5.0

func DeleteAttachment(a *Attachment, remove bool) error

DeleteAttachment deletes the given attachment and optionally the associated file.

func DeleteAttachments added in v0.5.0

func DeleteAttachments(attachments []*Attachment, remove bool) (int, error)

DeleteAttachments deletes the given attachments and optionally the associated files.

func DeleteAttachmentsByComment added in v0.5.0

func DeleteAttachmentsByComment(commentId int64, remove bool) (int, error)

DeleteAttachmentsByComment deletes all attachments associated with the given comment.

func DeleteAttachmentsByIssue added in v0.5.0

func DeleteAttachmentsByIssue(issueId int64, remove bool) (int, error)

DeleteAttachmentsByIssue deletes all attachments associated with the given issue.

func DeleteBeans added in v0.6.0

func DeleteBeans(e Engine, beans ...interface{}) (err error)

DeleteBeans deletes all given beans, beans should contain delete conditions.

func DeleteEmailAddress added in v0.5.11

func DeleteEmailAddress(email *EmailAddress) error

func DeleteInactivateUsers added in v0.5.0

func DeleteInactivateUsers() error

DeleteInactivateUsers deletes all inactivate users and email addresses.

func DeleteLabel added in v0.4.0

func DeleteLabel(repoId int64, strId string) error

DeleteLabel delete a label of given repository.

func DeleteMilestone added in v0.4.0

func DeleteMilestone(m *Milestone) (err error)

DeleteMilestone deletes a milestone.

func DeleteNotice added in v0.5.5

func DeleteNotice(id int64) error

DeleteNotice deletes a system notice by given ID.

func DeleteOauth2ById added in v0.4.0

func DeleteOauth2ById(id int64) error

DeleteOauth2ById deletes a oauth2 by ID.

func DeleteOrganization added in v0.5.0

func DeleteOrganization(org *User) (err error)

TODO: need some kind of mechanism to record failure. DeleteOrganization completely and permanently deletes everything of organization.

func DeletePublicKey

func DeletePublicKey(key *PublicKey) error

DeletePublicKey deletes SSH key information both in database and authorized_keys file.

func DeleteRepository

func DeleteRepository(uid, repoID int64, userName string) error

DeleteRepository deletes a repository for a user or organization.

func DeleteRepositoryArchives added in v0.5.8

func DeleteRepositoryArchives() error

DeleteRepositoryArchives deletes all repositories' archives.

func DeleteTeam added in v0.5.0

func DeleteTeam(t *Team) error

DeleteTeam deletes given team. It's caller's responsibility to assign organization ID.

func DeleteUser

func DeleteUser(u *User) error

FIXME: need some kind of mechanism to record failure. HINT: system notice DeleteUser completely and permanently deletes everything of user.

func DeleteWebhook added in v0.4.0

func DeleteWebhook(hookId int64) error

DeleteWebhook deletes webhook of repository.

func DeliverHooks added in v0.5.0

func DeliverHooks()

DeliverHooks checks and delivers undelivered hooks. FIXME: maybe can use goroutine to shoot a number of them at same time?

func DumpDatabase added in v0.4.0

func DumpDatabase(filePath string) error

DumpDatabase dumps all data from database to file system.

func FollowUser

func FollowUser(userId int64, followId int64) (err error)

FollowUser marks someone be another's follower.

func GetIssueCountByPoster added in v0.4.0

func GetIssueCountByPoster(uid, rid int64, isClosed bool) int64

GetIssueCountByPoster returns number of issues of repository by poster.

func GetRepositoryCount

func GetRepositoryCount(user *User) (int64, error)

GetRepositoryCount returns the total number of repositories of user.

func GetUserEmailsByNames added in v0.3.0

func GetUserEmailsByNames(names []string) []string

GetUserEmailsByNames returns a list of e-mails corresponds to names.

func GetUserIdsByNames added in v0.4.0

func GetUserIdsByNames(names []string) []int64

GetUserIdsByNames returns a slice of ids corresponds to names.

func GetUserSalt

func GetUserSalt() string

GetUserSalt returns a ramdom user salt token.

func GitFsck added in v0.5.9

func GitFsck()

GitFsck calls 'git fsck' to check repository health.

func GitGcRepos added in v0.5.9

func GitGcRepos() error

func HasAccess

func HasAccess(u *User, repo *Repository, testMode AccessMode) (bool, error)

HasAccess returns true if someone has the request access level. User can be nil!

func HasTeamRepo added in v0.6.0

func HasTeamRepo(orgID, teamID, repoID int64) bool

HasTeamRepo returns true if given repository belongs to team.

func IsEmailUsed

func IsEmailUsed(email string) (bool, error)

IsEmailUsed returns true if the e-mail has been used.

func IsErrLastOrgOwner added in v0.6.0

func IsErrLastOrgOwner(err error) bool

func IsErrRepoNotExist added in v0.6.0

func IsErrRepoNotExist(err error) bool

func IsErrUserHasOrgs added in v0.6.0

func IsErrUserHasOrgs(err error) bool

func IsErrUserOwnRepos added in v0.6.0

func IsErrUserOwnRepos(err error) bool

func IsLegalName

func IsLegalName(repoName string) bool

IsLegalName returns false if name contains illegal characters.

func IsOrgEmailUsed added in v0.5.9

func IsOrgEmailUsed(email string) (bool, error)

IsOrgEmailUsed returns true if the e-mail has been used in organization account.

func IsOrganizationMember added in v0.5.0

func IsOrganizationMember(orgId, uid int64) bool

IsOrganizationMember returns true if given user is member of organization.

func IsOrganizationOwner added in v0.5.0

func IsOrganizationOwner(orgId, uid int64) bool

IsOrganizationOwner returns true if given user is in the owner team.

func IsPublicMembership added in v0.5.0

func IsPublicMembership(orgId, uid int64) bool

IsPublicMembership returns true if given user public his/her membership.

func IsReleaseExist added in v0.3.0

func IsReleaseExist(repoId int64, tagName string) (bool, error)

IsReleaseExist returns true if release with given tag name already exists.

func IsRepositoryExist

func IsRepositoryExist(u *User, repoName string) bool

IsRepositoryExist returns true if the repository with given name under user has already existed.

func IsStaring added in v0.5.0

func IsStaring(uid, repoId int64) bool

IsStaring checks if user has starred given repository.

func IsTeamMember added in v0.5.0

func IsTeamMember(orgID, teamID, uid int64) bool

IsTeamMember returns true if given user is a member of team.

func IsUserExist

func IsUserExist(uid int64, name string) (bool, error)

IsUserExist checks if given user name exist, the user name should be noncased unique. If uid is presented, then check will rule out that one, it is used when update a user name in settings page.

func IsValidHookContentType added in v0.5.8

func IsValidHookContentType(name string) bool

IsValidHookContentType returns true if given name is a valid hook content type.

func IsValidHookTaskType added in v0.5.8

func IsValidHookTaskType(name string) bool

IsValidHookTaskType returns true if given name is a valid hook task type.

func IsWatching

func IsWatching(uid, repoId int64) bool

IsWatching checks if user has watched given repository.

func LoadModelsConfig

func LoadModelsConfig()

func LoadRepoConfig

func LoadRepoConfig()

func LoginAuth added in v0.4.0

func LoginAuth(username, password string) smtp.Auth

func MakeEmailPrimary added in v0.5.11

func MakeEmailPrimary(email *EmailAddress) error

func MirrorRepository added in v0.3.0

func MirrorRepository(repoId int64, userName, repoName, repoPath, url string) error

MirrorRepository creates a mirror repository from source.

func MirrorUpdate added in v0.3.0

func MirrorUpdate()

MirrorUpdate checks and updates mirror repositories.

func NewAccessToken added in v0.5.8

func NewAccessToken(t *AccessToken) error

NewAccessToken creates new access token.

func NewEngine

func NewEngine() (err error)

func NewIssue added in v0.4.0

func NewIssue(issue *Issue) (err error)

CreateIssue creates new issue for repository.

func NewIssueUserPairs added in v0.4.0

func NewIssueUserPairs(repo *Repository, issueID, orgID, posterID, assigneeID int64) (err error)

NewIssueUserPairs adds new issue-user pairs for new issue of repository.

func NewLabel added in v0.4.0

func NewLabel(l *Label) error

NewLabel creates new label of repository.

func NewMilestone added in v0.4.0

func NewMilestone(m *Milestone) (err error)

NewMilestone creates new milestone of repository.

func NewRepoAction

func NewRepoAction(u *User, repo *Repository) (err error)

NewRepoAction adds new action for creating repository.

func NewRepoContext

func NewRepoContext()

func NewTeam added in v0.5.0

func NewTeam(t *Team) error

NewTeam creates a record of new team. It's caller's responsibility to assign organization ID.

func NewTestEngine

func NewTestEngine(x *xorm.Engine) (err error)

func NotifyWatchers

func NotifyWatchers(act *Action) error

NotifyWatchers creates batch of actions for every watcher.

func PairsContains added in v0.4.0

func PairsContains(ius []*IssueUser, issueId int64) int

PairsContains returns true when pairs list contains given issue.

func ParseKeyString added in v0.5.13

func ParseKeyString(content string) (string, error)

Parse any key string in openssh or ssh2 format to clean openssh string (rfc4253)

func Ping added in v0.5.0

func Ping() error

func RemoveOrgRepo added in v0.6.0

func RemoveOrgRepo(orgID, repoID int64) error

RemoveOrgRepo removes all team-repository relations of given organization.

func RemoveOrgUser added in v0.5.0

func RemoveOrgUser(orgId, uid int64) error

RemoveOrgUser removes user from given organization.

func RemoveTeamMember added in v0.5.0

func RemoveTeamMember(orgId, teamId, uid int64) error

RemoveTeamMember removes member from given team of given organization.

func RemoveTeamRepo added in v0.6.0

func RemoveTeamRepo(teamID, repoID int64) error

RemoveTeamRepo deletes repository relation to team.

func RepoPath

func RepoPath(userName, repoName string) string

RepoPath returns repository path by given user and repository name.

func RewriteAllPublicKeys added in v0.5.13

func RewriteAllPublicKeys() error

RewriteAllPublicKeys removes any authorized key and rewrite all keys from database again.

func RewriteRepositoryUpdateHook added in v0.5.13

func RewriteRepositoryUpdateHook() error

RewriteRepositoryUpdateHook rewrites all repositories' update hook.

func SetEngine

func SetEngine() (err error)

func SlackLinkFormatter added in v0.5.0

func SlackLinkFormatter(url string, text string) string

func SlackTextFormatter added in v0.5.0

func SlackTextFormatter(s string) string


func SmtpAuth added in v0.4.0

func SmtpAuth(host string, port int, a smtp.Auth, useTls bool) error

func SortReleases added in v0.5.0

func SortReleases(rels []*Release)

SortReleases sorts releases by number of commits and created time.

func StarRepo added in v0.5.0

func StarRepo(uid, repoId int64, star bool) (err error)

Star or unstar repository.

func TransferOwnership added in v0.3.0

func TransferOwnership(u *User, newOwnerName string, repo *Repository) error

TransferOwnership transfers all corresponding setting from old user to new one.

func TransferRepoAction added in v0.3.0

func TransferRepoAction(actUser, oldOwner, newOwner *User, repo *Repository) (err error)

TransferRepoAction adds new action for transferring repository.

func UnFollowUser

func UnFollowUser(userId int64, unFollowId int64) (err error)

UnFollowUser unmarks someone be another's follower.

func Update added in v0.3.0

func Update(refName, oldCommitId, newCommitId, userName, repoUserName, repoName string, userId int64) error

func UpdateHookTask added in v0.5.0

func UpdateHookTask(t *HookTask) error

UpdateHookTask updates information of hook task.

func UpdateIssue

func UpdateIssue(issue *Issue) error

UpdateIssue updates information of issue.

func UpdateIssueUserPairByAssignee added in v0.4.0

func UpdateIssueUserPairByAssignee(aid, iid int64) error

UpdateIssueUserPairByAssignee updates issue-user pair for assigning.

func UpdateIssueUserPairByRead added in v0.4.0

func UpdateIssueUserPairByRead(uid, iid int64) error

UpdateIssueUserPairByRead updates issue-user pair for reading.

func UpdateIssueUserPairsByMentions added in v0.4.0

func UpdateIssueUserPairsByMentions(uids []int64, iid int64) error

UpdateIssueUserPairsByMentions updates issue-user pairs by mentioning.

func UpdateIssueUserPairsByStatus added in v0.4.0

func UpdateIssueUserPairsByStatus(iid int64, isClosed bool) error

UpdateIssueUserByStatus updates issue-user pairs by issue status.

func UpdateLabel added in v0.4.0

func UpdateLabel(l *Label) error

UpdateLabel updates label information.

func UpdateMentions added in v0.5.0

func UpdateMentions(userNames []string, issueId int64) error

func UpdateMilestone added in v0.4.0

func UpdateMilestone(m *Milestone) error

UpdateMilestone updates information of given milestone.

func UpdateMirror added in v0.3.0

func UpdateMirror(m *Mirror) error

func UpdateOauth2 added in v0.5.0

func UpdateOauth2(oa *Oauth2) error

UpdateOauth2 updates given OAuth2.

func UpdatePublicKey added in v0.5.0

func UpdatePublicKey(key *PublicKey) error

UpdatePublicKey updates given public key.

func UpdateRelease added in v0.5.0

func UpdateRelease(gitRepo *git.Repository, rel *Release) (err error)

UpdateRelease updates information of a release.

func UpdateRepository

func UpdateRepository(repo *Repository, visibilityChanged bool) (err error)

func UpdateSource added in v0.4.0

func UpdateSource(source *LoginSource) error

func UpdateTeam added in v0.5.0

func UpdateTeam(t *Team, authChanged bool) (err error)

UpdateTeam updates information of team.

func UpdateUser

func UpdateUser(u *User) error

UpdateUser updates user's information.

func UpdateWebhook added in v0.4.0

func UpdateWebhook(w *Webhook) error

UpdateWebhook updates information of webhook.

func UserPath

func UserPath(userName string) string

UserPath returns the path absolute path of user repositories.

func ValidateCommitsWithEmails added in v0.5.5

func ValidateCommitsWithEmails(oldCommits *list.List) *list.List

ValidateCommitsWithEmails checks if authors' e-mails of commits are corresponding to users.

func WatchRepo

func WatchRepo(uid, repoId int64, watch bool) (err error)

Watch or unwatch repository.


type Access

type Access struct {
	ID     int64 `xorm:"pk autoincr"`
	UserID int64 `xorm:"UNIQUE(s)"`
	RepoID int64 `xorm:"UNIQUE(s)"`
	Mode   AccessMode

Access represents the highest access level of a user to the repository. The only access type that is not in this table is the real owner of a repository. In case of an organization repository, the members of the owners team are in this table.

type AccessMode added in v0.6.0

type AccessMode int
const (
	ACCESS_MODE_NONE AccessMode = iota

func AccessLevel added in v0.6.0

func AccessLevel(u *User, repo *Repository) (AccessMode, error)

AccessLevel returns the Access a user has to a repository. Will return NoneAccess if the user does not have access. User can be nil!

type AccessToken added in v0.5.8

type AccessToken struct {
	Id                int64
	Uid               int64
	Name              string
	Sha1              string    `xorm:"UNIQUE VARCHAR(40)"`
	Created           time.Time `xorm:"CREATED"`
	Updated           time.Time
	HasRecentActivity bool `xorm:"-"`
	HasUsed           bool `xorm:"-"`

AccessToken represents a personal access token.

func GetAccessTokenBySha added in v0.5.8

func GetAccessTokenBySha(sha string) (*AccessToken, error)

GetAccessTokenBySha returns access token by given sha1.

func ListAccessTokens added in v0.5.8

func ListAccessTokens(uid int64) ([]*AccessToken, error)

ListAccessTokens returns a list of access tokens belongs to given user.

type Action

type Action struct {
	ID           int64 `xorm:"pk autoincr"`
	UserID       int64 // Receiver user id.
	OpType       ActionType
	ActUserID    int64  // Action user id.
	ActUserName  string // Action user name.
	ActEmail     string
	ActAvatar    string `xorm:"-"`
	RepoID       int64
	RepoUserName string
	RepoName     string
	RefName      string
	IsPrivate    bool      `xorm:"NOT NULL DEFAULT false"`
	Content      string    `xorm:"TEXT"`
	Created      time.Time `xorm:"created"`

Action represents user operation type and other information to repository., it implemented interface base.Actioner so that can be used in template render.

func GetFeeds

func GetFeeds(uid, offset int64, isProfile bool) ([]*Action, error)

GetFeeds returns action list of given user in given context.

func (Action) GetActEmail

func (a Action) GetActEmail() string

func (Action) GetActUserName

func (a Action) GetActUserName() string

func (Action) GetBranch

func (a Action) GetBranch() string

func (Action) GetContent

func (a Action) GetContent() string

func (Action) GetCreate added in v0.5.0

func (a Action) GetCreate() time.Time

func (Action) GetIssueInfos added in v0.5.0

func (a Action) GetIssueInfos() []string

func (Action) GetOpType

func (a Action) GetOpType() int
func (a Action) GetRepoLink() string

func (Action) GetRepoName

func (a Action) GetRepoName() string

func (Action) GetRepoPath added in v0.6.0

func (a Action) GetRepoPath() string

func (Action) GetRepoUserName added in v0.4.0

func (a Action) GetRepoUserName() string

type ActionType added in v0.5.0

type ActionType int
const (
	CREATE_REPO   ActionType = iota + 1 // 1
	DELETE_REPO                         // 2
	STAR_REPO                           // 3
	FOLLOW_REPO                         // 4
	COMMIT_REPO                         // 5
	CREATE_ISSUE                        // 6
	PULL_REQUEST                        // 7
	TRANSFER_REPO                       // 8
	PUSH_TAG                            // 9
	COMMENT_ISSUE                       // 10

type Attachment added in v0.5.0

type Attachment struct {
	Id        int64
	IssueId   int64
	CommentId int64
	Name      string
	Path      string    `xorm:"TEXT"`
	Created   time.Time `xorm:"CREATED"`

func CreateAttachment added in v0.5.0

func CreateAttachment(issueId, commentId int64, name, path string) (*Attachment, error)

CreateAttachment creates a new attachment inside the database and

func GetAttachmentById added in v0.5.0

func GetAttachmentById(id int64) (*Attachment, error)

Attachment returns the attachment by given ID.

func GetAttachmentsByComment added in v0.5.0

func GetAttachmentsByComment(commentId int64) ([]*Attachment, error)

GetAttachmentsByComment returns a list of attachments for the given comment

func GetAttachmentsByIssue added in v0.5.0

func GetAttachmentsByIssue(issueId int64) ([]*Attachment, error)

GetAttachmentsByIssue returns a list of attachments for the given issue

func GetAttachmentsForIssue added in v0.5.0

func GetAttachmentsForIssue(issueId int64) ([]*Attachment, error)

type BasePayload added in v0.5.0

type BasePayload interface {
	GetJSONPayload() ([]byte, error)
type CloneLink struct {
	SSH   string
	HTTPS string
	Git   string

CloneLink represents different types of clone URLs of repository.

type Collaboration added in v0.6.0

type Collaboration struct {
	ID      int64     `xorm:"pk autoincr"`
	RepoID  int64     `xorm:"UNIQUE(s) INDEX NOT NULL"`
	UserID  int64     `xorm:"UNIQUE(s) INDEX NOT NULL"`
	Created time.Time `xorm:"CREATED"`

A Collaboration is a relation between an individual and a repository

type Comment

type Comment struct {
	Id       int64
	Type     CommentType
	PosterId int64
	Poster   *User `xorm:"-"`
	IssueId  int64
	CommitId int64
	Line     int64
	Content  string    `xorm:"TEXT"`
	Created  time.Time `xorm:"CREATED"`

Comment represents a comment in commit and issue page.

func CreateComment

func CreateComment(userId, repoId, issueId, commitId, line int64, cmtType CommentType, content string, attachments []int64) (*Comment, error)

CreateComment creates comment of issue or commit.

func GetCommentById added in v0.5.0

func GetCommentById(commentId int64) (*Comment, error)

GetCommentById returns the comment with the given id

func GetIssueComments

func GetIssueComments(issueId int64) ([]Comment, error)

GetIssueComments returns list of comment by given issue id.

func (*Comment) AfterDelete added in v0.5.0

func (c *Comment) AfterDelete()

func (*Comment) Attachments added in v0.5.0

func (c *Comment) Attachments() []*Attachment

Attachments returns the attachments for this comment.

func (*Comment) ContentHtml added in v0.5.0

func (c *Comment) ContentHtml() template.HTML

type CommentType added in v0.5.0

type CommentType int

CommentType defines whether a comment is just a simple comment, an action (like close) or a reference.

const (
	// Plain comment, can be associated with a commit (CommitId > 0) and a line (Line > 0)
	COMMENT_TYPE_COMMENT CommentType = iota

	// References.
	// Reference from some commit (not part of a pull request)
	// Reference from some pull request

type Diff

type Diff struct {
	TotalAddition, TotalDeletion int
	Files                        []*DiffFile

func GetDiffCommit added in v0.5.0

func GetDiffCommit(repoPath, commitId string, maxlines int) (*Diff, error)

func GetDiffRange added in v0.5.0

func GetDiffRange(repoPath, beforeCommitId string, afterCommitId string, maxlines int) (*Diff, error)

func ParsePatch

func ParsePatch(pid int64, maxlines int, cmd *exec.Cmd, reader io.Reader) (*Diff, error)

func (*Diff) NumFiles

func (diff *Diff) NumFiles() int

type DiffFile

type DiffFile struct {
	Name               string
	Index              int
	Addition, Deletion int
	Type               int
	IsCreated          bool
	IsDeleted          bool
	IsBin              bool
	Sections           []*DiffSection

type DiffLine

type DiffLine struct {
	LeftIdx  int
	RightIdx int
	Type     int
	Content  string

func (DiffLine) GetType

func (d DiffLine) GetType() int

type DiffSection

type DiffSection struct {
	Name  string
	Lines []*DiffLine

type EmailAddress added in v0.5.11

type EmailAddress struct {
	Id          int64
	Uid         int64  `xorm:"INDEX NOT NULL"`
	Email       string `xorm:"UNIQUE NOT NULL"`
	IsActivated bool
	IsPrimary   bool `xorm:"-"`

EmailAdresses is the list of all email addresses of a user. Can contain the primary email address, but is not obligatory

func GetEmailAddresses added in v0.5.11

func GetEmailAddresses(uid int64) ([]*EmailAddress, error)

GetEmailAddresses returns all e-mail addresses belongs to given user.

func VerifyActiveEmailCode added in v0.5.11

func VerifyActiveEmailCode(code, email string) *EmailAddress

verify active code when active account

func (*EmailAddress) Activate added in v0.5.11

func (email *EmailAddress) Activate() error

type Engine added in v0.5.8

type Engine interface {
	Delete(interface{}) (int64, error)
	Exec(string, ...interface{}) (sql.Result, error)
	Find(interface{}, ...interface{}) error
	Get(interface{}) (bool, error)
	Insert(...interface{}) (int64, error)
	InsertOne(interface{}) (int64, error)
	Id(interface{}) *xorm.Session
	Sql(string, ...interface{}) *xorm.Session
	Where(string, ...interface{}) *xorm.Session

Engine represents a xorm engine or session.

type ErrLastOrgOwner added in v0.5.0

type ErrLastOrgOwner struct {
	UID int64

func (ErrLastOrgOwner) Error added in v0.6.0

func (err ErrLastOrgOwner) Error() string

type ErrRepoNotExist

type ErrRepoNotExist struct {
	ID   int64
	UID  int64
	Name string

func (ErrRepoNotExist) Error added in v0.6.0

func (err ErrRepoNotExist) Error() string

type ErrUserHasOrgs added in v0.5.0

type ErrUserHasOrgs struct {
	UID int64

func (ErrUserHasOrgs) Error added in v0.6.0

func (err ErrUserHasOrgs) Error() string

type ErrUserOwnRepos

type ErrUserOwnRepos struct {
	UID int64

func (ErrUserOwnRepos) Error added in v0.6.0

func (err ErrUserOwnRepos) Error() string

type Follow

type Follow struct {
	Id       int64
	UserID   int64 `xorm:"unique(follow)"`
	FollowID int64 `xorm:"unique(follow)"`

Follow is connection request for receiving user notification.

type HookContentType added in v0.5.0

type HookContentType int
const (
	JSON HookContentType = iota + 1

func ToHookContentType added in v0.5.8

func ToHookContentType(name string) HookContentType

ToHookContentType returns HookContentType by given name.

func (HookContentType) Name added in v0.5.8

func (t HookContentType) Name() string

type HookEvent added in v0.4.0

type HookEvent struct {
	PushOnly bool `json:"push_only"`

HookEvent represents events that will delivery hook.

type HookEventType added in v0.5.0

type HookEventType string
const (
	HOOK_EVENT_PUSH HookEventType = "push"

type HookTask added in v0.5.0

type HookTask struct {
	Id             int64
	Uuid           string
	Type           HookTaskType
	Url            string
	BasePayload    `xorm:"-"`
	PayloadContent string `xorm:"TEXT"`
	ContentType    HookContentType
	EventType      HookEventType
	IsSsl          bool
	IsDelivered    bool
	IsSucceed      bool

HookTask represents a hook task.

type HookTaskType added in v0.5.0

type HookTaskType int
const (
	GOGS HookTaskType = iota + 1

func ToHookTaskType added in v0.5.8

func ToHookTaskType(name string) HookTaskType

ToHookTaskType returns HookTaskType by given name.

func (HookTaskType) Name added in v0.5.8

func (t HookTaskType) Name() string

type Issue

type Issue struct {
	Id              int64
	RepoId          int64 `xorm:"INDEX"`
	Index           int64 // Index in one repository.
	Name            string
	Repo            *Repository `xorm:"-"`
	PosterId        int64
	Poster          *User    `xorm:"-"`
	LabelIds        string   `xorm:"TEXT"`
	Labels          []*Label `xorm:"-"`
	MilestoneId     int64
	AssigneeId      int64
	Assignee        *User `xorm:"-"`
	IsRead          bool  `xorm:"-"`
	IsPull          bool  // Indicates whether is a pull request or not.
	IsClosed        bool
	Content         string `xorm:"TEXT"`
	RenderedContent string `xorm:"-"`
	Priority        int
	NumComments     int
	Deadline        time.Time
	Created         time.Time `xorm:"CREATED"`
	Updated         time.Time `xorm:"UPDATED"`

Issue represents an issue or pull request of repository.

func GetIssueById added in v0.4.0

func GetIssueById(id int64) (*Issue, error)

GetIssueById returns an issue by ID.

func GetIssueByIndex

func GetIssueByIndex(rid, index int64) (*Issue, error)

GetIssueByIndex returns issue by given index in repository.

func GetIssueByRef added in v0.5.0

func GetIssueByRef(ref string) (issue *Issue, err error)

GetIssueByRef returns an Issue specified by a GFM reference. See for more information on the syntax.

func GetIssues

func GetIssues(uid, rid, pid, mid int64, page int, isClosed bool, labelIds, sortType string) ([]Issue, error)

GetIssues returns a list of issues by given conditions.

func GetIssuesByLabel added in v0.4.0

func GetIssuesByLabel(repoId int64, label string) ([]*Issue, error)

GetIssuesByLabel returns a list of issues by given label and repository.

func (*Issue) AfterDelete added in v0.5.0

func (i *Issue) AfterDelete()

func (*Issue) Attachments added in v0.5.0

func (i *Issue) Attachments() []*Attachment

func (*Issue) GetAssignee added in v0.4.0

func (i *Issue) GetAssignee() (err error)

func (*Issue) GetLabels added in v0.4.0

func (i *Issue) GetLabels() error

func (*Issue) GetPoster added in v0.4.0

func (i *Issue) GetPoster() (err error)

type IssueStats added in v0.4.0

type IssueStats struct {
	OpenCount, ClosedCount int64
	AllCount               int64
	AssignCount            int64
	CreateCount            int64
	MentionCount           int64

IssueStats represents issue statistic information.

func GetIssueStats added in v0.4.0

func GetIssueStats(rid, uid int64, isShowClosed bool, filterMode int) *IssueStats

GetIssueStats returns issue statistic information by given conditions.

func GetUserIssueStats added in v0.4.0

func GetUserIssueStats(uid int64, filterMode int) *IssueStats

GetUserIssueStats returns issue statistic information for dashboard by given conditions.

type IssueStatus added in v0.4.0

type IssueStatus int

type IssueUser added in v0.4.0

type IssueUser struct {
	Id          int64
	Uid         int64 `xorm:"INDEX"` // User ID.
	IssueId     int64
	RepoId      int64 `xorm:"INDEX"`
	MilestoneId int64
	IsRead      bool
	IsAssigned  bool
	IsMentioned bool
	IsPoster    bool
	IsClosed    bool

IssueUser represents an issue-user relation.

func GetIssueUserPairs added in v0.4.0

func GetIssueUserPairs(rid, uid int64, isClosed bool) ([]*IssueUser, error)

GetIssueUserPairs returns issue-user pairs by given repository and user.

func GetIssueUserPairsByMode added in v0.4.0

func GetIssueUserPairsByMode(uid, rid int64, isClosed bool, page, filterMode int) ([]*IssueUser, error)

GetIssueUserPairsByMode returns issue-user pairs by given repository and user.

func GetIssueUserPairsByRepoIds added in v0.4.0

func GetIssueUserPairsByRepoIds(rids []int64, isClosed bool, page int) ([]*IssueUser, error)

GetIssueUserPairsByRepoIds returns issue-user pairs by given repository IDs.

type LDAPConfig added in v0.4.0

type LDAPConfig struct {

func (*LDAPConfig) FromDB added in v0.4.0

func (cfg *LDAPConfig) FromDB(bs []byte) error

func (*LDAPConfig) ToDB added in v0.4.0

func (cfg *LDAPConfig) ToDB() ([]byte, error)

type Label

type Label struct {
	Id              int64
	RepoId          int64 `xorm:"INDEX"`
	Name            string
	Color           string `xorm:"VARCHAR(7)"`
	NumIssues       int
	NumClosedIssues int
	NumOpenIssues   int  `xorm:"-"`
	IsChecked       bool `xorm:"-"`

Label represents a label of repository for issues.

func GetLabelById added in v0.4.0

func GetLabelById(id int64) (*Label, error)

GetLabelById returns a label by given ID.

func GetLabels added in v0.4.0

func GetLabels(repoId int64) ([]*Label, error)

GetLabels returns a list of labels of given repository ID.

func (*Label) CalOpenIssues added in v0.4.0

func (m *Label) CalOpenIssues()

CalOpenIssues calculates the open issues of label.

type LoginSource added in v0.4.0

type LoginSource struct {
	Id                int64
	Type              LoginType
	Name              string          `xorm:"UNIQUE"`
	IsActived         bool            `xorm:"NOT NULL DEFAULT false"`
	Cfg               core.Conversion `xorm:"TEXT"`
	AllowAutoRegister bool            `xorm:"NOT NULL DEFAULT false"`
	Created           time.Time       `xorm:"CREATED"`
	Updated           time.Time       `xorm:"UPDATED"`

func GetAuths added in v0.4.0

func GetAuths() ([]*LoginSource, error)

func GetLoginSourceById added in v0.4.0

func GetLoginSourceById(id int64) (*LoginSource, error)

func (*LoginSource) BeforeSet added in v0.4.0

func (source *LoginSource) BeforeSet(colName string, val xorm.Cell)

func (*LoginSource) LDAP added in v0.4.0

func (source *LoginSource) LDAP() *LDAPConfig

func (*LoginSource) SMTP added in v0.4.0

func (source *LoginSource) SMTP() *SMTPConfig

func (*LoginSource) TypeString added in v0.4.0

func (source *LoginSource) TypeString() string

type LoginType added in v0.5.0

type LoginType int
const (
	NOTYPE LoginType = iota

type Milestone

type Milestone struct {
	Id              int64
	RepoId          int64 `xorm:"INDEX"`
	Index           int64
	Name            string
	Content         string `xorm:"TEXT"`
	RenderedContent string `xorm:"-"`
	IsClosed        bool
	NumIssues       int
	NumClosedIssues int
	NumOpenIssues   int `xorm:"-"`
	Completeness    int // Percentage(1-100).
	Deadline        time.Time
	DeadlineString  string `xorm:"-"`
	ClosedDate      time.Time

Milestone represents a milestone of repository.

func GetMilestoneById added in v0.4.0

func GetMilestoneById(id int64) (*Milestone, error)

GetMilestoneById returns the milestone by given ID.

func GetMilestoneByIndex added in v0.4.0

func GetMilestoneByIndex(repoId, idx int64) (*Milestone, error)

GetMilestoneByIndex returns the milestone of given repository and index.

func GetMilestones added in v0.4.0

func GetMilestones(repoId int64, isClosed bool) ([]*Milestone, error)

GetMilestones returns a list of milestones of given repository and status.

func (*Milestone) CalOpenIssues added in v0.4.0

func (m *Milestone) CalOpenIssues()

CalOpenIssues calculates the open issues of milestone.

type Mirror added in v0.3.0

type Mirror struct {
	Id         int64
	RepoId     int64
	RepoName   string    // <user name>/<repo name>
	Interval   int       // Hour.
	Updated    time.Time `xorm:"UPDATED"`
	NextUpdate time.Time

Mirror represents a mirror information of repository.

func GetMirror added in v0.3.0

func GetMirror(repoId int64) (*Mirror, error)

GetMirror returns mirror object by given repository ID.

type Notice added in v0.5.5

type Notice struct {
	Id          int64
	Type        NoticeType
	Description string    `xorm:"TEXT"`
	Created     time.Time `xorm:"CREATED"`

Notice represents a system notice for admin.

func GetNotices added in v0.5.5

func GetNotices(num, offset int) ([]*Notice, error)

GetNotices returns given number of notices with offset.

func (*Notice) TrStr added in v0.5.5

func (n *Notice) TrStr() string

TrStr returns a translation format string.

type NoticeType added in v0.5.5

type NoticeType int
const (
	NOTICE_REPOSITORY NoticeType = iota + 1

type Oauth2 added in v0.3.0

type Oauth2 struct {
	Id                int64
	Uid               int64     `xorm:"unique(s)"` // userId
	User              *User     `xorm:"-"`
	Type              int       `xorm:"unique(s) unique(oauth)"` // twitter,github,google...
	Identity          string    `xorm:"unique(s) unique(oauth)"` // id..
	Token             string    `xorm:"TEXT not null"`
	Created           time.Time `xorm:"CREATED"`
	Updated           time.Time
	HasRecentActivity bool `xorm:"-"`

func GetOauth2 added in v0.3.0

func GetOauth2(identity string) (oa *Oauth2, err error)

func GetOauth2ById added in v0.3.0

func GetOauth2ById(id int64) (oa *Oauth2, err error)

func GetOauthByUserId added in v0.3.0

func GetOauthByUserId(uid int64) ([]*Oauth2, error)

GetOauthByUserId returns list of oauthes that are related to given user.

type OauthType added in v0.5.0

type OauthType int
const (
	GITHUB OauthType = iota + 1

type OrgUser added in v0.5.0

type OrgUser struct {
	ID       int64 `xorm:"pk autoincr"`
	Uid      int64 `xorm:"INDEX UNIQUE(s)"`
	OrgID    int64 `xorm:"INDEX UNIQUE(s)"`
	IsPublic bool
	IsOwner  bool
	NumTeams int

OrgUser represents an organization-user relation.

func GetOrgUsersByOrgId added in v0.5.0

func GetOrgUsersByOrgId(orgId int64) ([]*OrgUser, error)

GetOrgUsersByOrgId returns all organization-user relations by organization ID.

func GetOrgUsersByUserId added in v0.5.0

func GetOrgUsersByUserId(uid int64) ([]*OrgUser, error)

GetOrgUsersByUserId returns all organization-user relations by user ID.

type Payload added in v0.5.0

type Payload struct {
	Secret     string           `json:"secret"`
	Ref        string           `json:"ref"`
	Commits    []*PayloadCommit `json:"commits"`
	Repo       *PayloadRepo     `json:"repository"`
	Pusher     *PayloadAuthor   `json:"pusher"`
	Before     string           `json:"before"`
	After      string           `json:"after"`
	CompareUrl string           `json:"compare_url"`

Payload represents a payload information of hook.

func (Payload) GetJSONPayload added in v0.5.0

func (p Payload) GetJSONPayload() ([]byte, error)

type PayloadAuthor added in v0.5.0

type PayloadAuthor struct {
	Name     string `json:"name"`
	Email    string `json:"email"`
	UserName string `json:"username"`

FIXME: just use go-gogs-client structs maybe?

type PayloadCommit added in v0.5.0

type PayloadCommit struct {
	Id      string         `json:"id"`
	Message string         `json:"message"`
	Url     string         `json:"url"`
	Author  *PayloadAuthor `json:"author"`

type PayloadRepo added in v0.5.0

type PayloadRepo struct {
	Id          int64          `json:"id"`
	Name        string         `json:"name"`
	Url         string         `json:"url"`
	Description string         `json:"description"`
	Website     string         `json:"website"`
	Watchers    int            `json:"watchers"`
	Owner       *PayloadAuthor `json:"owner"`
	Private     bool           `json:"private"`

type PublicKey

type PublicKey struct {
	Id                int64
	OwnerId           int64     `xorm:"UNIQUE(s) INDEX NOT NULL"`
	Name              string    `xorm:"UNIQUE(s) NOT NULL"`
	Fingerprint       string    `xorm:"INDEX NOT NULL"`
	Content           string    `xorm:"TEXT NOT NULL"`
	Created           time.Time `xorm:"CREATED"`
	Updated           time.Time
	HasRecentActivity bool `xorm:"-"`
	HasUsed           bool `xorm:"-"`

PublicKey represents a SSH key.

func GetPublicKeyById added in v0.5.0

func GetPublicKeyById(keyId int64) (*PublicKey, error)

GetPublicKeyById returns public key by given ID.

func ListPublicKeys added in v0.5.8

func ListPublicKeys(uid int64) ([]*PublicKey, error)

ListPublicKeys returns a list of public keys belongs to given user.

func (*PublicKey) GetAuthorizedString added in v0.4.0

func (key *PublicKey) GetAuthorizedString() string

GetAuthorizedString generates and returns formatted public key string for authorized_keys file.

func (*PublicKey) OmitEmail added in v0.5.9

func (k *PublicKey) OmitEmail() string

OmitEmail returns content of public key but without e-mail address.

type Release added in v0.3.0

type Release struct {
	Id               int64
	RepoId           int64
	PublisherId      int64
	Publisher        *User `xorm:"-"`
	TagName          string
	LowerTagName     string
	Target           string
	Title            string
	Sha1             string `xorm:"VARCHAR(40)"`
	NumCommits       int
	NumCommitsBehind int    `xorm:"-"`
	Note             string `xorm:"TEXT"`
	IsDraft          bool   `xorm:"NOT NULL DEFAULT false"`
	IsPrerelease     bool
	Created          time.Time `xorm:"CREATED"`

Release represents a release of repository.

func GetRelease added in v0.5.0

func GetRelease(repoId int64, tagName string) (*Release, error)

GetRelease returns release by given ID.

func GetReleasesByRepoId added in v0.3.0

func GetReleasesByRepoId(repoId int64) (rels []*Release, err error)

GetReleasesByRepoId returns a list of releases of repository.

type ReleaseSorter added in v0.5.0

type ReleaseSorter struct {
	// contains filtered or unexported fields

func (*ReleaseSorter) Len added in v0.5.0

func (rs *ReleaseSorter) Len() int

func (*ReleaseSorter) Less added in v0.5.0

func (rs *ReleaseSorter) Less(i, j int) bool

func (*ReleaseSorter) Swap added in v0.5.0

func (rs *ReleaseSorter) Swap(i, j int)

type Repository

type Repository struct {
	Id            int64
	OwnerId       int64  `xorm:"UNIQUE(s)"`
	Owner         *User  `xorm:"-"`
	LowerName     string `xorm:"UNIQUE(s) INDEX NOT NULL"`
	Name          string `xorm:"INDEX NOT NULL"`
	Description   string
	Website       string
	DefaultBranch string

	NumWatches          int
	NumStars            int
	NumForks            int
	NumIssues           int
	NumClosedIssues     int
	NumOpenIssues       int `xorm:"-"`
	NumPulls            int
	NumClosedPulls      int
	NumOpenPulls        int `xorm:"-"`
	NumMilestones       int `xorm:"NOT NULL DEFAULT 0"`
	NumClosedMilestones int `xorm:"NOT NULL DEFAULT 0"`
	NumOpenMilestones   int `xorm:"-"`
	NumTags             int `xorm:"-"`

	IsPrivate bool
	IsBare    bool

	IsMirror bool
	*Mirror  `xorm:"-"`

	IsFork   bool `xorm:"NOT NULL DEFAULT false"`
	ForkId   int64
	ForkRepo *Repository `xorm:"-"`

	Created time.Time `xorm:"CREATED"`
	Updated time.Time `xorm:"UPDATED"`

Repository represents a git repository.

func CreateRepository

func CreateRepository(u *User, name, desc, lang, license string, isPrivate, isMirror, initReadme bool) (_ *Repository, err error)

CreateRepository creates a repository for given user or organization.

func ForkRepository

func ForkRepository(u *User, oldRepo *Repository, name, desc string) (_ *Repository, err error)

func GetRecentUpdatedRepositories added in v0.3.0

func GetRecentUpdatedRepositories(num int) (repos []*Repository, err error)

GetRecentUpdatedRepositories returns the list of repositories that are recently updated.

func GetRepositories

func GetRepositories(uid int64, private bool) ([]*Repository, error)

GetRepositories returns a list of repositories of given user.

func GetRepositoriesWithUsers added in v0.4.0

func GetRepositoriesWithUsers(num, offset int) ([]*Repository, error)

GetRepositoriesWithUsers returns given number of repository objects with offset. It also auto-gets corresponding users.

func GetRepositoryById

func GetRepositoryById(id int64) (*Repository, error)

GetRepositoryById returns the repository by given id if exists.

func GetRepositoryByName

func GetRepositoryByName(uid int64, repoName string) (*Repository, error)

GetRepositoryByName returns the repository by given name under user if exists.

func GetRepositoryByRef added in v0.5.0

func GetRepositoryByRef(ref string) (*Repository, error)

GetRepositoryByRef returns a Repository specified by a GFM reference. See for more information on the syntax.

func MigrateRepository added in v0.3.0

func MigrateRepository(u *User, name, desc string, private, mirror bool, url string) (*Repository, error)

MigrateRepository migrates a existing repository from other project hosting.

func SearchRepositoryByName added in v0.5.0

func SearchRepositoryByName(opt SearchOption) (repos []*Repository, err error)

SearchRepositoryByName returns given number of repositories whose name contains keyword.

func (*Repository) AddCollaborator added in v0.6.0

func (repo *Repository) AddCollaborator(u *User) error

Add collaborator and accompanying access

func (repo *Repository) CloneLink() (cl CloneLink, err error)

CloneLink returns clone URLs of repository.

func (*Repository) DeleteCollaborator added in v0.6.0

func (repo *Repository) DeleteCollaborator(u *User) (err error)

Delete collaborator and accompanying access

func (*Repository) DescriptionHtml added in v0.5.0

func (repo *Repository) DescriptionHtml() template.HTML

DescriptionHtml does special handles to description and return HTML string.

func (*Repository) GetCollaborators added in v0.6.0

func (repo *Repository) GetCollaborators() ([]*User, error)

GetCollaborators returns the collaborators for a repository

func (*Repository) GetForkRepo added in v0.5.8

func (repo *Repository) GetForkRepo() (err error)

func (*Repository) GetMirror added in v0.5.0

func (repo *Repository) GetMirror() (err error)

func (*Repository) GetOwner added in v0.4.0

func (repo *Repository) GetOwner() (err error)

func (*Repository) HasAccess added in v0.5.5

func (repo *Repository) HasAccess(u *User) bool

func (*Repository) IsOwnedBy added in v0.5.8

func (repo *Repository) IsOwnedBy(u *User) bool

func (*Repository) RecalculateAccesses added in v0.6.0

func (r *Repository) RecalculateAccesses() error

RecalculateAccesses recalculates all accesses for repository.

func (repo *Repository) RepoLink() (string, error)

func (*Repository) RepoPath added in v0.5.8

func (repo *Repository) RepoPath() (string, error)

type SMTPConfig added in v0.4.0

type SMTPConfig struct {
	Auth string
	Host string
	Port int
	TLS  bool

func (*SMTPConfig) FromDB added in v0.4.0

func (cfg *SMTPConfig) FromDB(bs []byte) error

func (*SMTPConfig) ToDB added in v0.4.0

func (cfg *SMTPConfig) ToDB() ([]byte, error)

type SearchOption added in v0.5.0

type SearchOption struct {
	Keyword string
	Uid     int64
	Limit   int
	Private bool

type Slack added in v0.5.0

type Slack struct {
	Channel string `json:"channel"`

type SlackAttachment added in v0.5.0

type SlackAttachment struct {
	Color string `json:"color"`
	Text  string `json:"text"`

type SlackPayload added in v0.5.0

type SlackPayload struct {
	Channel     string            `json:"channel"`
	Text        string            `json:"text"`
	Username    string            `json:"username"`
	IconUrl     string            `json:"icon_url"`
	UnfurlLinks int               `json:"unfurl_links"`
	LinkNames   int               `json:"link_names"`
	Attachments []SlackAttachment `json:"attachments"`

func GetSlackPayload added in v0.5.0

func GetSlackPayload(p *Payload, meta string) (*SlackPayload, error)

func (SlackPayload) GetJSONPayload added in v0.5.0

func (p SlackPayload) GetJSONPayload() ([]byte, error)

type Star added in v0.5.0

type Star struct {
	Id     int64
	Uid    int64 `xorm:"UNIQUE(s)"`
	RepoId int64 `xorm:"UNIQUE(s)"`

type Statistic

type Statistic struct {
	Counter struct {
		User, Org, PublicKey,
		Repo, Watch, Star, Action, Access,
		Issue, Comment, Oauth, Follow,
		Mirror, Release, LoginSource, Webhook,
		Milestone, Label, HookTask,
		Team, UpdateTask, Attachment int64

func GetStatistic

func GetStatistic() (stats Statistic)

type Team added in v0.5.0

type Team struct {
	ID          int64 `xorm:"pk autoincr"`
	OrgID       int64 `xorm:"INDEX"`
	LowerName   string
	Name        string
	Description string
	Authorize   AccessMode
	Repos       []*Repository `xorm:"-"`
	Members     []*User       `xorm:"-"`
	NumRepos    int
	NumMembers  int

Team represents a organization team.

func GetTeam added in v0.5.0

func GetTeam(orgId int64, name string) (*Team, error)

GetTeam returns team by given team name and organization.

func GetTeamById added in v0.5.0

func GetTeamById(teamId int64) (*Team, error)

GetTeamById returns team by given ID.

func GetUserTeams added in v0.5.0

func GetUserTeams(orgId, uid int64) ([]*Team, error)

GetUserTeams returns all teams that user belongs to in given organization.

func (*Team) AddMember added in v0.5.0

func (t *Team) AddMember(uid int64) error

AddMember adds new member to team of organization.

func (*Team) AddRepository added in v0.5.0

func (t *Team) AddRepository(repo *Repository) (err error)

AddRepository adds new repository to team of organization.

func (*Team) GetMembers added in v0.5.0

func (t *Team) GetMembers() (err error)

GetMembers returns all members in team of organization.

func (*Team) GetRepositories added in v0.5.0

func (t *Team) GetRepositories() error

GetRepositories returns all repositories in team of organization.

func (*Team) HasRepository added in v0.6.0

func (t *Team) HasRepository(repoID int64) bool

HasRepository returns true if given repository belong to team.

func (*Team) IsMember added in v0.5.0

func (t *Team) IsMember(uid int64) bool

IsTeamMember returns true if given user is a member of team.

func (*Team) IsOwnerTeam added in v0.5.0

func (t *Team) IsOwnerTeam() bool

IsOwnerTeam returns true if team is owner team.

func (*Team) RemoveMember added in v0.5.0

func (t *Team) RemoveMember(uid int64) error

RemoveMember removes member from team of organization.

func (*Team) RemoveRepository added in v0.5.0

func (t *Team) RemoveRepository(repoID int64) error

RemoveRepository removes repository from team of organization.

type TeamRepo added in v0.6.0

type TeamRepo struct {
	ID     int64 `xorm:"pk autoincr"`
	OrgID  int64 `xorm:"INDEX"`
	TeamID int64 `xorm:"UNIQUE(s)"`
	RepoID int64 `xorm:"UNIQUE(s)"`

TeamRepo represents an team-repository relation.

type TeamUser added in v0.5.0

type TeamUser struct {
	ID     int64 `xorm:"pk autoincr"`
	OrgID  int64 `xorm:"INDEX"`
	TeamID int64 `xorm:"UNIQUE(s)"`
	Uid    int64 `xorm:"UNIQUE(s)"`

TeamUser represents an team-user relation.

type UpdateTask added in v0.5.0

type UpdateTask struct {
	Id          int64
	Uuid        string `xorm:"index"`
	RefName     string
	OldCommitId string
	NewCommitId string

func GetUpdateTasksByUuid added in v0.5.0

func GetUpdateTasksByUuid(uuid string) ([]*UpdateTask, error)

type User

type User struct {
	Id        int64
	LowerName string `xorm:"UNIQUE NOT NULL"`
	Name      string `xorm:"UNIQUE NOT NULL"`
	FullName  string
	// Email is the primary email address (to be used for communication).
	Email       string `xorm:"UNIQUE(s) NOT NULL"`
	Passwd      string `xorm:"NOT NULL"`
	LoginType   LoginType
	LoginSource int64 `xorm:"NOT NULL DEFAULT 0"`
	LoginName   string
	Type        UserType      `xorm:"UNIQUE(s)"`
	Orgs        []*User       `xorm:"-"`
	Repos       []*Repository `xorm:"-"`
	Location    string
	Website     string
	Rands       string    `xorm:"VARCHAR(10)"`
	Salt        string    `xorm:"VARCHAR(10)"`
	Created     time.Time `xorm:"CREATED"`
	Updated     time.Time `xorm:"UPDATED"`

	// Permissions.
	IsActive     bool
	IsAdmin      bool
	AllowGitHook bool

	// Avatar.
	Avatar          string `xorm:"VARCHAR(2048) NOT NULL"`
	AvatarEmail     string `xorm:"NOT NULL"`
	UseCustomAvatar bool

	// Counters.
	NumFollowers  int
	NumFollowings int
	NumStars      int
	NumRepos      int

	// For organization.
	Description string
	NumTeams    int
	NumMembers  int
	Teams       []*Team `xorm:"-"`
	Members     []*User `xorm:"-"`

User represents the object of individual and member of organization.

func CreateOrganization added in v0.5.0

func CreateOrganization(org, owner *User) (*User, error)

CreateOrganization creates record of a new organization.

func GetOrgByName added in v0.5.9

func GetOrgByName(name string) (*User, error)

GetOrgByName returns organization by given name.

func GetOrganizations added in v0.5.0

func GetOrganizations(num, offset int) ([]*User, error)

GetOrganizations returns given number of organizations with offset.

func GetTeamMembers added in v0.5.0

func GetTeamMembers(teamID int64) ([]*User, error)

GetTeamMembers returns all members in given team of organization.

func GetUserByEmail added in v0.3.0

func GetUserByEmail(email string) (*User, error)

GetUserByEmail returns the user object by given e-mail if exists.

func GetUserById

func GetUserById(id int64) (*User, error)

GetUserById returns the user object by given ID if exists.

func GetUserByKeyId

func GetUserByKeyId(keyId int64) (*User, error)

func GetUserByName

func GetUserByName(name string) (*User, error)

GetUserByName returns user by given name.

func GetUsers

func GetUsers(num, offset int) ([]*User, error)

GetUsers returns given number of user objects with offset.

func LoginUserLdapSource added in v0.4.0

func LoginUserLdapSource(u *User, name, passwd string, sourceId int64, cfg *LDAPConfig, autoRegister bool) (*User, error)

Query if name/passwd can login against the LDAP directory pool Create a local user if success Return the same LoginUserPlain semantic FIXME:

func LoginUserSMTPSource added in v0.4.0

func LoginUserSMTPSource(u *User, name, passwd string, sourceId int64, cfg *SMTPConfig, autoRegister bool) (*User, error)

Query if name/passwd can login against the LDAP directory pool Create a local user if success Return the same LoginUserPlain semantic

func SearchUserByName added in v0.4.0

func SearchUserByName(opt SearchOption) (us []*User, err error)

SearchUserByName returns given number of users whose name contains keyword.

func UserSignIn added in v0.4.2

func UserSignIn(uname, passwd string) (*User, error)

UserSignIn validates user name and password.

func ValidateCommitWithEmail added in v0.5.5

func ValidateCommitWithEmail(c *git.Commit) *User

ValidateCommitWithEmail chceck if author's e-mail of commit is corresponsind to a user.

func VerifyUserActiveCode

func VerifyUserActiveCode(code string) (user *User)

verify active code when active account

func (*User) AddMember added in v0.5.0

func (org *User) AddMember(uid int64) error

AddMember adds new member to organization.

func (u *User) AvatarLink() string

AvatarLink returns user gravatar link.

func (*User) CustomAvatarPath added in v0.5.9

func (u *User) CustomAvatarPath() string

CustomAvatarPath returns user custom avatar file path.

func (u *User) DashboardLink() string

DashboardLink returns the user dashboard page link.

func (*User) EncodePasswd

func (u *User) EncodePasswd()

EncodePasswd encodes password to safe format.

func (*User) GetAccessibleRepositories added in v0.6.0

func (u *User) GetAccessibleRepositories() (map[*Repository]AccessMode, error)

GetAccessibleRepositories finds all repositories where a user has access to, besides his own.

func (*User) GetFullNameFallback added in v0.5.2

func (u *User) GetFullNameFallback() string

GetFullNameFallback returns Full Name if set, otherwise username

func (*User) GetMembers added in v0.5.0

func (org *User) GetMembers() error

GetMembers returns all members of organization.

func (*User) GetOrganizationCount added in v0.5.0

func (u *User) GetOrganizationCount() (int64, error)

GetOrganizationCount returns count of membership of organization of user.

func (*User) GetOrganizations added in v0.5.0

func (u *User) GetOrganizations() error

GetOrganizations returns all organizations that user belongs to.

func (*User) GetOwnerTeam added in v0.5.0

func (org *User) GetOwnerTeam() (*Team, error)

GetOwnerTeam returns owner team of organization.

func (*User) GetRepositories added in v0.5.0

func (u *User) GetRepositories() (err error)

GetRepositories returns all repositories that user owns, including private repositories.

func (*User) GetTeam added in v0.5.0

func (org *User) GetTeam(name string) (*Team, error)

GetTeam returns named team of organization.

func (*User) GetTeams added in v0.5.0

func (org *User) GetTeams() error

GetTeams returns all teams that belong to organization.

func (u *User) HomeLink() string

HomeLink returns the user home page link.

func (*User) IsOrgMember added in v0.5.0

func (org *User) IsOrgMember(uid int64) bool

IsOrgMember returns true if given user is member of organization.

func (*User) IsOrganization added in v0.5.0

func (u *User) IsOrganization() bool

IsOrganization returns true if user is actually a organization.

func (*User) IsOwnedBy added in v0.5.9

func (org *User) IsOwnedBy(uid int64) bool

IsOwnedBy returns true if given user is in the owner team.

func (*User) IsPublicMember added in v0.5.0

func (u *User) IsPublicMember(orgId int64) bool

IsPublicMember returns true if user public his/her membership in give organization.

func (*User) IsUserOrgOwner added in v0.5.0

func (u *User) IsUserOrgOwner(orgId int64) bool

IsUserOrgOwner returns true if user is in the owner team of given organization.

func (*User) NewGitSig

func (u *User) NewGitSig() *git.Signature

NewGitSig generates and returns the signature of given user.

func (*User) RemoveMember added in v0.5.0

func (org *User) RemoveMember(uid int64) error

RemoveMember removes member from organization.

func (*User) RemoveOrgRepo added in v0.6.0

func (org *User) RemoveOrgRepo(repoID int64) error

RemoveOrgRepo removes all team-repository relations of organization.

func (*User) UploadAvatar added in v0.5.9

func (u *User) UploadAvatar(data []byte) error

UploadAvatar saves custom avatar for user. FIXME: split uploads to different subdirs in case we have massive users.

func (*User) ValidtePassword added in v0.5.0

func (u *User) ValidtePassword(passwd string) bool

ValidtePassword checks if given password matches the one belongs to the user.

type UserCommit added in v0.5.5

type UserCommit struct {
	User *User

UserCommit represents a commit with validation of user.

type UserType added in v0.5.0

type UserType int
const (
	INDIVIDUAL UserType = iota // Historic reason to make it starts at 0.

type Watch

type Watch struct {
	ID     int64 `xorm:"pk autoincr"`
	UserID int64 `xorm:"UNIQUE(watch)"`
	RepoID int64 `xorm:"UNIQUE(watch)"`

Watch is connection request for receiving repository notification.

func GetWatchers added in v0.4.0

func GetWatchers(rid int64) ([]*Watch, error)

GetWatchers returns all watchers of given repository.

type Webhook added in v0.4.0

type Webhook struct {
	Id           int64
	RepoId       int64
	Url          string `xorm:"TEXT"`
	ContentType  HookContentType
	Secret       string `xorm:"TEXT"`
	Events       string `xorm:"TEXT"`
	*HookEvent   `xorm:"-"`
	IsSsl        bool
	IsActive     bool
	HookTaskType HookTaskType
	Meta         string `xorm:"TEXT"` // store hook-specific attributes
	OrgId        int64
	Created      time.Time `xorm:"CREATED"`
	Updated      time.Time `xorm:"UPDATED"`

Webhook represents a web hook object.

func GetActiveWebhooksByOrgId added in v0.5.0

func GetActiveWebhooksByOrgId(orgId int64) (ws []*Webhook, err error)

GetActiveWebhooksByOrgId returns all active webhooks for an organization.

func GetActiveWebhooksByRepoId added in v0.4.0

func GetActiveWebhooksByRepoId(repoId int64) (ws []*Webhook, err error)

GetActiveWebhooksByRepoId returns all active webhooks of repository.

func GetWebhookById added in v0.4.0

func GetWebhookById(hookId int64) (*Webhook, error)

GetWebhookById returns webhook by given ID.

func GetWebhooksByOrgId added in v0.5.0

func GetWebhooksByOrgId(orgId int64) (ws []*Webhook, err error)

GetWebhooksByOrgId returns all webhooks for an organization.

func GetWebhooksByRepoId added in v0.4.0

func GetWebhooksByRepoId(repoId int64) (ws []*Webhook, err error)

GetWebhooksByRepoId returns all webhooks of repository.

func (*Webhook) GetEvent added in v0.4.0

func (w *Webhook) GetEvent()

GetEvent handles conversion from Events to HookEvent.

func (*Webhook) GetSlackHook added in v0.5.0

func (w *Webhook) GetSlackHook() *Slack

func (*Webhook) HasPushEvent added in v0.4.0

func (w *Webhook) HasPushEvent() bool

HasPushEvent returns true if hook enabled push event.

func (*Webhook) UpdateEvent added in v0.5.0

func (w *Webhook) UpdateEvent() error

UpdateEvent handles conversion from HookEvent to Events.


Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
t or T : Toggle theme light dark auto
y or Y : Canonical URL