notify

package
v1.22.1 Latest Latest
Warning

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

Go to latest
Published: Jul 4, 2024 License: MIT Imports: 8 Imported by: 22

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AdoptRepository

func AdoptRepository(ctx context.Context, doer, u *user_model.User, repo *repo_model.Repository)

AdoptRepository notifies the adoption of a repository to notifiers

func AutoMergePullRequest

func AutoMergePullRequest(ctx context.Context, doer *user_model.User, pr *issues_model.PullRequest)

AutoMergePullRequest notifies merge pull request to notifiers

func ChangeDefaultBranch

func ChangeDefaultBranch(ctx context.Context, repo *repo_model.Repository)

ChangeDefaultBranch notifies change default branch to notifiers

func CreateIssueComment

func CreateIssueComment(ctx context.Context, doer *user_model.User, repo *repo_model.Repository,
	issue *issues_model.Issue, comment *issues_model.Comment, mentions []*user_model.User,
)

CreateIssueComment notifies issue comment related message to notifiers

func CreateRef

func CreateRef(ctx context.Context, pusher *user_model.User, repo *repo_model.Repository, refFullName git.RefName, refID string)

CreateRef notifies branch or tag creation to notifiers

func CreateRepository

func CreateRepository(ctx context.Context, doer, u *user_model.User, repo *repo_model.Repository)

CreateRepository notifies create repository to notifiers

func DeleteComment

func DeleteComment(ctx context.Context, doer *user_model.User, c *issues_model.Comment)

DeleteComment notifies delete comment to notifiers

func DeleteIssue

func DeleteIssue(ctx context.Context, doer *user_model.User, issue *issues_model.Issue)

DeleteIssue notify when some issue deleted

func DeleteRef

func DeleteRef(ctx context.Context, pusher *user_model.User, repo *repo_model.Repository, refFullName git.RefName)

DeleteRef notifies branch or tag deletion to notifiers

func DeleteRelease

func DeleteRelease(ctx context.Context, doer *user_model.User, rel *repo_model.Release)

DeleteRelease notifies delete release to notifiers

func DeleteRepository

func DeleteRepository(ctx context.Context, doer *user_model.User, repo *repo_model.Repository)

DeleteRepository notifies delete repository to notifiers

func DeleteWikiPage

func DeleteWikiPage(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, page string)

DeleteWikiPage notifies deleting wiki pages to notifiers

func EditWikiPage

func EditWikiPage(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, page, comment string)

EditWikiPage notifies editing or renaming wiki pages to notifiers

func ForkRepository

func ForkRepository(ctx context.Context, doer *user_model.User, oldRepo, repo *repo_model.Repository)

ForkRepository notifies fork repository to notifiers

func IssueChangeAssignee

func IssueChangeAssignee(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, assignee *user_model.User, removed bool, comment *issues_model.Comment)

IssueChangeAssignee notifies change content to notifiers

func IssueChangeContent

func IssueChangeContent(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, oldContent string)

IssueChangeContent notifies change content to notifiers

func IssueChangeLabels

func IssueChangeLabels(ctx context.Context, doer *user_model.User, issue *issues_model.Issue,
	addedLabels, removedLabels []*issues_model.Label,
)

IssueChangeLabels notifies change labels to notifiers

func IssueChangeMilestone

func IssueChangeMilestone(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, oldMilestoneID int64)

IssueChangeMilestone notifies change milestone to notifiers

func IssueChangeRef

func IssueChangeRef(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, oldRef string)

IssueChangeRef notifies change reference to notifiers

func IssueChangeStatus

func IssueChangeStatus(ctx context.Context, doer *user_model.User, commitID string, issue *issues_model.Issue, actionComment *issues_model.Comment, closeOrReopen bool)

IssueChangeStatus notifies close or reopen issue to notifiers

func IssueChangeTitle

func IssueChangeTitle(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, oldTitle string)

IssueChangeTitle notifies change title to notifiers

func IssueClearLabels

func IssueClearLabels(ctx context.Context, doer *user_model.User, issue *issues_model.Issue)

IssueClearLabels notifies clear labels to notifiers

func MergePullRequest

func MergePullRequest(ctx context.Context, doer *user_model.User, pr *issues_model.PullRequest)

MergePullRequest notifies merge pull request to notifiers

func MigrateRepository

func MigrateRepository(ctx context.Context, doer, u *user_model.User, repo *repo_model.Repository)

MigrateRepository notifies create repository to notifiers

func NewIssue

func NewIssue(ctx context.Context, issue *issues_model.Issue, mentions []*user_model.User)

NewIssue notifies new issue to notifiers

func NewPullRequest

func NewPullRequest(ctx context.Context, pr *issues_model.PullRequest, mentions []*user_model.User)

NewPullRequest notifies new pull request to notifiers

func NewRelease

func NewRelease(ctx context.Context, rel *repo_model.Release)

NewRelease notifies new release to notifiers

func NewWikiPage

func NewWikiPage(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, page, comment string)

NewWikiPage notifies creating new wiki pages to notifiers

func PackageCreate

func PackageCreate(ctx context.Context, doer *user_model.User, pd *packages_model.PackageDescriptor)

PackageCreate notifies creation of a package to notifiers

func PackageDelete

func PackageDelete(ctx context.Context, doer *user_model.User, pd *packages_model.PackageDescriptor)

PackageDelete notifies deletion of a package to notifiers

func PullRequestChangeTargetBranch

func PullRequestChangeTargetBranch(ctx context.Context, doer *user_model.User, pr *issues_model.PullRequest, oldBranch string)

PullRequestChangeTargetBranch notifies when a pull request's target branch was changed

func PullRequestCodeComment

func PullRequestCodeComment(ctx context.Context, pr *issues_model.PullRequest, comment *issues_model.Comment, mentions []*user_model.User)

PullRequestCodeComment notifies new pull request code comment

func PullRequestPushCommits

func PullRequestPushCommits(ctx context.Context, doer *user_model.User, pr *issues_model.PullRequest, comment *issues_model.Comment)

PullRequestPushCommits notifies when push commits to pull request's head branch

func PullRequestReview

func PullRequestReview(ctx context.Context, pr *issues_model.PullRequest, review *issues_model.Review, comment *issues_model.Comment, mentions []*user_model.User)

PullRequestReview notifies new pull request review

func PullRequestReviewRequest

func PullRequestReviewRequest(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, reviewer *user_model.User, isRequest bool, comment *issues_model.Comment)

PullRequestReviewRequest notifies Request Review change

func PullRequestSynchronized

func PullRequestSynchronized(ctx context.Context, doer *user_model.User, pr *issues_model.PullRequest)

PullRequestSynchronized notifies Synchronized pull request

func PullReviewDismiss

func PullReviewDismiss(ctx context.Context, doer *user_model.User, review *issues_model.Review, comment *issues_model.Comment)

PullReviewDismiss notifies when a review was dismissed by repo admin

func PushCommits

func PushCommits(ctx context.Context, pusher *user_model.User, repo *repo_model.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits)

PushCommits notifies commits pushed to notifiers

func RegisterNotifier

func RegisterNotifier(notifier Notifier)

RegisterNotifier providers method to receive notify messages

func RenameRepository

func RenameRepository(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, oldName string)

RenameRepository notifies repository renamed

func RepoPendingTransfer

func RepoPendingTransfer(ctx context.Context, doer, newOwner *user_model.User, repo *repo_model.Repository)

RepoPendingTransfer notifies creation of pending transfer to notifiers

func SyncCreateRef

func SyncCreateRef(ctx context.Context, pusher *user_model.User, repo *repo_model.Repository, refFullName git.RefName, refID string)

SyncCreateRef notifies branch or tag creation to notifiers

func SyncDeleteRef

func SyncDeleteRef(ctx context.Context, pusher *user_model.User, repo *repo_model.Repository, refFullName git.RefName)

SyncDeleteRef notifies branch or tag deletion to notifiers

func SyncPushCommits

func SyncPushCommits(ctx context.Context, pusher *user_model.User, repo *repo_model.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits)

SyncPushCommits notifies commits pushed to notifiers

func TransferRepository

func TransferRepository(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, newOwnerName string)

TransferRepository notifies create repository to notifiers

func UpdateComment

func UpdateComment(ctx context.Context, doer *user_model.User, c *issues_model.Comment, oldContent string)

UpdateComment notifies update comment to notifiers

func UpdateRelease

func UpdateRelease(ctx context.Context, doer *user_model.User, rel *repo_model.Release)

UpdateRelease notifies update release to notifiers

Types

type Notifier

type Notifier interface {
	Run()

	AdoptRepository(ctx context.Context, doer, u *user_model.User, repo *repo_model.Repository)
	CreateRepository(ctx context.Context, doer, u *user_model.User, repo *repo_model.Repository)
	MigrateRepository(ctx context.Context, doer, u *user_model.User, repo *repo_model.Repository)
	DeleteRepository(ctx context.Context, doer *user_model.User, repo *repo_model.Repository)
	ForkRepository(ctx context.Context, doer *user_model.User, oldRepo, repo *repo_model.Repository)
	RenameRepository(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, oldRepoName string)
	TransferRepository(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, oldOwnerName string)
	RepoPendingTransfer(ctx context.Context, doer, newOwner *user_model.User, repo *repo_model.Repository)

	NewIssue(ctx context.Context, issue *issues_model.Issue, mentions []*user_model.User)
	IssueChangeStatus(ctx context.Context, doer *user_model.User, commitID string, issue *issues_model.Issue, actionComment *issues_model.Comment, closeOrReopen bool)
	DeleteIssue(ctx context.Context, doer *user_model.User, issue *issues_model.Issue)
	IssueChangeMilestone(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, oldMilestoneID int64)
	IssueChangeAssignee(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, assignee *user_model.User, removed bool, comment *issues_model.Comment)
	PullRequestReviewRequest(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, reviewer *user_model.User, isRequest bool, comment *issues_model.Comment)
	IssueChangeContent(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, oldContent string)
	IssueClearLabels(ctx context.Context, doer *user_model.User, issue *issues_model.Issue)
	IssueChangeTitle(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, oldTitle string)
	IssueChangeRef(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, oldRef string)
	IssueChangeLabels(ctx context.Context, doer *user_model.User, issue *issues_model.Issue,
		addedLabels, removedLabels []*issues_model.Label)

	NewPullRequest(ctx context.Context, pr *issues_model.PullRequest, mentions []*user_model.User)
	MergePullRequest(ctx context.Context, doer *user_model.User, pr *issues_model.PullRequest)
	AutoMergePullRequest(ctx context.Context, doer *user_model.User, pr *issues_model.PullRequest)
	PullRequestSynchronized(ctx context.Context, doer *user_model.User, pr *issues_model.PullRequest)
	PullRequestReview(ctx context.Context, pr *issues_model.PullRequest, review *issues_model.Review, comment *issues_model.Comment, mentions []*user_model.User)
	PullRequestCodeComment(ctx context.Context, pr *issues_model.PullRequest, comment *issues_model.Comment, mentions []*user_model.User)
	PullRequestChangeTargetBranch(ctx context.Context, doer *user_model.User, pr *issues_model.PullRequest, oldBranch string)
	PullRequestPushCommits(ctx context.Context, doer *user_model.User, pr *issues_model.PullRequest, comment *issues_model.Comment)
	PullReviewDismiss(ctx context.Context, doer *user_model.User, review *issues_model.Review, comment *issues_model.Comment)

	CreateIssueComment(ctx context.Context, doer *user_model.User, repo *repo_model.Repository,
		issue *issues_model.Issue, comment *issues_model.Comment, mentions []*user_model.User)
	UpdateComment(ctx context.Context, doer *user_model.User, c *issues_model.Comment, oldContent string)
	DeleteComment(ctx context.Context, doer *user_model.User, c *issues_model.Comment)

	NewWikiPage(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, page, comment string)
	EditWikiPage(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, page, comment string)
	DeleteWikiPage(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, page string)

	NewRelease(ctx context.Context, rel *repo_model.Release)
	UpdateRelease(ctx context.Context, doer *user_model.User, rel *repo_model.Release)
	DeleteRelease(ctx context.Context, doer *user_model.User, rel *repo_model.Release)

	PushCommits(ctx context.Context, pusher *user_model.User, repo *repo_model.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits)
	CreateRef(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, refFullName git.RefName, refID string)
	DeleteRef(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, refFullName git.RefName)
	SyncPushCommits(ctx context.Context, pusher *user_model.User, repo *repo_model.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits)
	SyncCreateRef(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, refFullName git.RefName, refID string)
	SyncDeleteRef(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, refFullName git.RefName)

	PackageCreate(ctx context.Context, doer *user_model.User, pd *packages_model.PackageDescriptor)
	PackageDelete(ctx context.Context, doer *user_model.User, pd *packages_model.PackageDescriptor)

	ChangeDefaultBranch(ctx context.Context, repo *repo_model.Repository)
}

Notifier defines an interface to notify receiver

type NullNotifier

type NullNotifier struct{}

NullNotifier implements a blank notifier

func (*NullNotifier) AdoptRepository

func (*NullNotifier) AdoptRepository(ctx context.Context, doer, u *user_model.User, repo *repo_model.Repository)

AdoptRepository places a place holder function

func (*NullNotifier) AutoMergePullRequest

func (*NullNotifier) AutoMergePullRequest(ctx context.Context, doer *user_model.User, pr *issues_model.PullRequest)

AutoMergePullRequest places a place holder function

func (*NullNotifier) ChangeDefaultBranch

func (*NullNotifier) ChangeDefaultBranch(ctx context.Context, repo *repo_model.Repository)

ChangeDefaultBranch places a place holder function

func (*NullNotifier) CreateIssueComment

func (*NullNotifier) CreateIssueComment(ctx context.Context, doer *user_model.User, repo *repo_model.Repository,
	issue *issues_model.Issue, comment *issues_model.Comment, mentions []*user_model.User)

CreateIssueComment places a place holder function

func (*NullNotifier) CreateRef

func (*NullNotifier) CreateRef(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, refFullName git.RefName, refID string)

CreateRef notifies branch or tag creation to notifiers

func (*NullNotifier) CreateRepository

func (*NullNotifier) CreateRepository(ctx context.Context, doer, u *user_model.User, repo *repo_model.Repository)

CreateRepository places a place holder function

func (*NullNotifier) DeleteComment

func (*NullNotifier) DeleteComment(ctx context.Context, doer *user_model.User, c *issues_model.Comment)

DeleteComment places a place holder function

func (*NullNotifier) DeleteIssue

func (*NullNotifier) DeleteIssue(ctx context.Context, doer *user_model.User, issue *issues_model.Issue)

DeleteIssue notify when some issue deleted

func (*NullNotifier) DeleteRef

func (*NullNotifier) DeleteRef(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, refFullName git.RefName)

DeleteRef notifies branch or tag deletion to notifiers

func (*NullNotifier) DeleteRelease

func (*NullNotifier) DeleteRelease(ctx context.Context, doer *user_model.User, rel *repo_model.Release)

DeleteRelease places a place holder function

func (*NullNotifier) DeleteRepository

func (*NullNotifier) DeleteRepository(ctx context.Context, doer *user_model.User, repo *repo_model.Repository)

DeleteRepository places a place holder function

func (*NullNotifier) DeleteWikiPage

func (*NullNotifier) DeleteWikiPage(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, page string)

DeleteWikiPage places a place holder function

func (*NullNotifier) EditWikiPage

func (*NullNotifier) EditWikiPage(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, page, comment string)

EditWikiPage places a place holder function

func (*NullNotifier) ForkRepository

func (*NullNotifier) ForkRepository(ctx context.Context, doer *user_model.User, oldRepo, repo *repo_model.Repository)

ForkRepository places a place holder function

func (*NullNotifier) IssueChangeAssignee

func (*NullNotifier) IssueChangeAssignee(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, assignee *user_model.User, removed bool, comment *issues_model.Comment)

IssueChangeAssignee places a place holder function

func (*NullNotifier) IssueChangeContent

func (*NullNotifier) IssueChangeContent(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, oldContent string)

IssueChangeContent places a place holder function

func (*NullNotifier) IssueChangeLabels

func (*NullNotifier) IssueChangeLabels(ctx context.Context, doer *user_model.User, issue *issues_model.Issue,
	addedLabels, removedLabels []*issues_model.Label)

IssueChangeLabels places a place holder function

func (*NullNotifier) IssueChangeMilestone

func (*NullNotifier) IssueChangeMilestone(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, oldMilestoneID int64)

IssueChangeMilestone places a place holder function

func (*NullNotifier) IssueChangeRef

func (*NullNotifier) IssueChangeRef(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, oldTitle string)

IssueChangeRef places a place holder function

func (*NullNotifier) IssueChangeStatus

func (*NullNotifier) IssueChangeStatus(ctx context.Context, doer *user_model.User, commitID string, issue *issues_model.Issue, actionComment *issues_model.Comment, isClosed bool)

IssueChangeStatus places a place holder function

func (*NullNotifier) IssueChangeTitle

func (*NullNotifier) IssueChangeTitle(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, oldTitle string)

IssueChangeTitle places a place holder function

func (*NullNotifier) IssueClearLabels

func (*NullNotifier) IssueClearLabels(ctx context.Context, doer *user_model.User, issue *issues_model.Issue)

IssueClearLabels places a place holder function

func (*NullNotifier) MergePullRequest

func (*NullNotifier) MergePullRequest(ctx context.Context, doer *user_model.User, pr *issues_model.PullRequest)

MergePullRequest places a place holder function

func (*NullNotifier) MigrateRepository

func (*NullNotifier) MigrateRepository(ctx context.Context, doer, u *user_model.User, repo *repo_model.Repository)

MigrateRepository places a place holder function

func (*NullNotifier) NewIssue

func (*NullNotifier) NewIssue(ctx context.Context, issue *issues_model.Issue, mentions []*user_model.User)

NewIssue places a place holder function

func (*NullNotifier) NewPullRequest

func (*NullNotifier) NewPullRequest(ctx context.Context, pr *issues_model.PullRequest, mentions []*user_model.User)

NewPullRequest places a place holder function

func (*NullNotifier) NewRelease

func (*NullNotifier) NewRelease(ctx context.Context, rel *repo_model.Release)

NewRelease places a place holder function

func (*NullNotifier) NewWikiPage

func (*NullNotifier) NewWikiPage(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, page, comment string)

NewWikiPage places a place holder function

func (*NullNotifier) PackageCreate

PackageCreate places a place holder function

func (*NullNotifier) PackageDelete

PackageDelete places a place holder function

func (*NullNotifier) PullRequestChangeTargetBranch

func (*NullNotifier) PullRequestChangeTargetBranch(ctx context.Context, doer *user_model.User, pr *issues_model.PullRequest, oldBranch string)

PullRequestChangeTargetBranch places a place holder function

func (*NullNotifier) PullRequestCodeComment

func (*NullNotifier) PullRequestCodeComment(ctx context.Context, pr *issues_model.PullRequest, comment *issues_model.Comment, mentions []*user_model.User)

PullRequestCodeComment places a place holder function

func (*NullNotifier) PullRequestPushCommits

func (*NullNotifier) PullRequestPushCommits(ctx context.Context, doer *user_model.User, pr *issues_model.PullRequest, comment *issues_model.Comment)

PullRequestPushCommits notifies when push commits to pull request's head branch

func (*NullNotifier) PullRequestReview

func (*NullNotifier) PullRequestReview(ctx context.Context, pr *issues_model.PullRequest, r *issues_model.Review, comment *issues_model.Comment, mentions []*user_model.User)

PullRequestReview places a place holder function

func (*NullNotifier) PullRequestReviewRequest

func (*NullNotifier) PullRequestReviewRequest(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, reviewer *user_model.User, isRequest bool, comment *issues_model.Comment)

PullRequestReviewRequest places a place holder function

func (*NullNotifier) PullRequestSynchronized

func (*NullNotifier) PullRequestSynchronized(ctx context.Context, doer *user_model.User, pr *issues_model.PullRequest)

PullRequestSynchronized places a place holder function

func (*NullNotifier) PullReviewDismiss

func (*NullNotifier) PullReviewDismiss(ctx context.Context, doer *user_model.User, review *issues_model.Review, comment *issues_model.Comment)

PullReviewDismiss notifies when a review was dismissed by repo admin

func (*NullNotifier) PushCommits

PushCommits notifies commits pushed to notifiers

func (*NullNotifier) RenameRepository

func (*NullNotifier) RenameRepository(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, oldRepoName string)

RenameRepository places a place holder function

func (*NullNotifier) RepoPendingTransfer

func (*NullNotifier) RepoPendingTransfer(ctx context.Context, doer, newOwner *user_model.User, repo *repo_model.Repository)

RepoPendingTransfer places a place holder function

func (*NullNotifier) Run

func (*NullNotifier) Run()

Run places a place holder function

func (*NullNotifier) SyncCreateRef

func (*NullNotifier) SyncCreateRef(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, refFullName git.RefName, refID string)

SyncCreateRef places a place holder function

func (*NullNotifier) SyncDeleteRef

func (*NullNotifier) SyncDeleteRef(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, refFullName git.RefName)

SyncDeleteRef places a place holder function

func (*NullNotifier) SyncPushCommits

func (*NullNotifier) SyncPushCommits(ctx context.Context, pusher *user_model.User, repo *repo_model.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits)

SyncPushCommits places a place holder function

func (*NullNotifier) TransferRepository

func (*NullNotifier) TransferRepository(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, oldOwnerName string)

TransferRepository places a place holder function

func (*NullNotifier) UpdateComment

func (*NullNotifier) UpdateComment(ctx context.Context, doer *user_model.User, c *issues_model.Comment, oldContent string)

UpdateComment places a place holder function

func (*NullNotifier) UpdateRelease

func (*NullNotifier) UpdateRelease(ctx context.Context, doer *user_model.User, rel *repo_model.Release)

UpdateRelease places a place holder function

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL