Make repository management section handle lfs locks (#8726)
* Make repository maangement section handle lfs locks * Add check attribute handling and handle locking paths better * More cleanly check-attributes * handle error * Check if file exists in default branch before linking to it. * fixup * Properly cleanPath * Use cleanPath * Sigh
This commit is contained in:
parent
751cfb805d
commit
dc2fe9801f
10 changed files with 367 additions and 9 deletions
|
@ -49,7 +49,7 @@ func (l *LFSLock) AfterLoad(session *xorm.Session) {
|
|||
}
|
||||
|
||||
func cleanPath(p string) string {
|
||||
return path.Clean(p)
|
||||
return path.Clean("/" + p)[1:]
|
||||
}
|
||||
|
||||
// APIFormat convert a Release to lfs.LFSLock
|
||||
|
@ -71,6 +71,8 @@ func CreateLFSLock(lock *LFSLock) (*LFSLock, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
lock.Path = cleanPath(lock.Path)
|
||||
|
||||
l, err := GetLFSLock(lock.Repo, lock.Path)
|
||||
if err == nil {
|
||||
return l, ErrLFSLockAlreadyExist{lock.RepoID, lock.Path}
|
||||
|
@ -110,9 +112,24 @@ func GetLFSLockByID(id int64) (*LFSLock, error) {
|
|||
}
|
||||
|
||||
// GetLFSLockByRepoID returns a list of locks of repository.
|
||||
func GetLFSLockByRepoID(repoID int64) (locks []*LFSLock, err error) {
|
||||
err = x.Where("repo_id = ?", repoID).Find(&locks)
|
||||
return
|
||||
func GetLFSLockByRepoID(repoID int64, page, pageSize int) ([]*LFSLock, error) {
|
||||
sess := x.NewSession()
|
||||
defer sess.Close()
|
||||
|
||||
if page >= 0 && pageSize > 0 {
|
||||
start := 0
|
||||
if page > 0 {
|
||||
start = (page - 1) * pageSize
|
||||
}
|
||||
sess.Limit(pageSize, start)
|
||||
}
|
||||
lfsLocks := make([]*LFSLock, 0, pageSize)
|
||||
return lfsLocks, sess.Find(&lfsLocks, &LFSLock{RepoID: repoID})
|
||||
}
|
||||
|
||||
// CountLFSLockByRepoID returns a count of all LFSLocks associated with a repository.
|
||||
func CountLFSLockByRepoID(repoID int64) (int64, error) {
|
||||
return x.Count(&LFSLock{RepoID: repoID})
|
||||
}
|
||||
|
||||
// DeleteLFSLockByID deletes a lock by given ID.
|
||||
|
|
|
@ -2913,7 +2913,7 @@ func (repo *Repository) GetOriginalURLHostname() string {
|
|||
// GetTreePathLock returns LSF lock for the treePath
|
||||
func (repo *Repository) GetTreePathLock(treePath string) (*LFSLock, error) {
|
||||
if setting.LFS.StartServer {
|
||||
locks, err := GetLFSLockByRepoID(repo.ID)
|
||||
locks, err := GetLFSLockByRepoID(repo.ID, 0, 0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue