// Copyright 2019 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package integrations
import (
"encoding/base64"
"fmt"
"io/ioutil"
"net/url"
"os"
"testing"
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/process"
"code.gitea.io/gitea/modules/setting"
api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/util"
"github.com/stretchr/testify/assert"
"golang.org/x/crypto/openpgp"
"golang.org/x/crypto/openpgp/armor"
)
func TestGPGGit(t *testing.T) {
defer prepareTestEnv(t)()
username := "user2"
// OK Set a new GPG home
tmpDir, err := ioutil.TempDir("", "temp-gpg")
assert.NoError(t, err)
defer util.RemoveAll(tmpDir)
err = os.Chmod(tmpDir, 0700)
assert.NoError(t, err)
oldGNUPGHome := os.Getenv("GNUPGHOME")
err = os.Setenv("GNUPGHOME", tmpDir)
assert.NoError(t, err)
defer os.Setenv("GNUPGHOME", oldGNUPGHome)
// Need to create a root key
rootKeyPair, err := importTestingKey(tmpDir, "gitea", "gitea@fake.local")
assert.NoError(t, err)
if err != nil {
assert.FailNow(t, "Unable to import rootKeyPair")
}
rootKeyID := rootKeyPair.PrimaryKey.KeyIdShortString()
oldKeyID := setting.Repository.Signing.SigningKey
oldName := setting.Repository.Signing.SigningName
oldEmail := setting.Repository.Signing.SigningEmail
defer func() {
setting.Repository.Signing.SigningKey = oldKeyID
setting.Repository.Signing.SigningName = oldName
setting.Repository.Signing.SigningEmail = oldEmail
}()
setting.Repository.Signing.SigningKey = rootKeyID
setting.Repository.Signing.SigningName = "gitea"
setting.Repository.Signing.SigningEmail = "gitea@fake.local"
user := models.AssertExistsAndLoadBean(t, &models.User{Name: username}).(*models.User)
setting.Repository.Signing.InitialCommit = []string{"never"}
setting.Repository.Signing.CRUDActions = []string{"never"}
baseAPITestContext := NewAPITestContext(t, username, "repo1")
onGiteaRun(t, func(t *testing.T, u *url.URL) {
u.Path = baseAPITestContext.GitPath()
t.Run("Unsigned-Initial", func(t *testing.T) {
defer PrintCurrentTest(t)()
testCtx := NewAPITestContext(t, username, "initial-unsigned")
t.Run("CreateRepository", doAPICreateRepository(testCtx, false))
t.Run("CheckMasterBranchUnsigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) {
assert.NotNil(t, branch.Commit)
assert.NotNil(t, branch.Commit.Verification)
assert.False(t, branch.Commit.Verification.Verified)
assert.Empty(t, branch.Commit.Verification.Signature)
}))
t.Run("CreateCRUDFile-Never", crudActionCreateFile(
t, testCtx, user, "master", "never", "unsigned-never.txt", func(t *testing.T, response api.FileResponse) {
assert.False(t, response.Verification.Verified)
}))
t.Run("CreateCRUDFile-Never", crudActionCreateFile(
t, testCtx, user, "never", "never2", "unsigned-never2.txt", func(t *testing.T, response api.FileResponse) {
assert.False(t, response.Verification.Verified)
}))
})
}, false)
setting.Repository.Signing.CRUDActions = []string{"parentsigned"}
onGiteaRun(t, func(t *testing.T, u *url.URL) {
u.Path = baseAPITestContext.GitPath()
t.Run("Unsigned-Initial-CRUD-ParentSigned", func(t *testing.T) {
defer PrintCurrentTest(t)()
testCtx := NewAPITestContext(t, username, "initial-unsigned")
t.Run("CreateCRUDFile-ParentSigned", crudActionCreateFile(
t, testCtx, user, "master", "parentsigned", "signed-parent.txt", func(t *testing.T, response api.FileResponse) {
assert.False(t, response.Verification.Verified)
}))
t.Run("CreateCRUDFile-ParentSigned", crudActionCreateFile(
t, testCtx, user, "parentsigned", "parentsigned2", "signed-parent2.txt", func(t *testing.T, response api.FileResponse) {
assert.False(t, response.Verification.Verified)
}))
})
}, false)
setting.Repository.Signing.CRUDActions = []string{"never"}
onGiteaRun(t, func(t *testing.T, u *url.URL) {
u.Path = baseAPITestContext.GitPath()
t.Run("Unsigned-Initial-CRUD-Never", func(t *testing.T) {
defer PrintCurrentTest(t)()
testCtx := NewAPITestContext(t, username, "initial-unsigned")
t.Run("CreateCRUDFile-Never", crudActionCreateFile(
t, testCtx, user, "parentsigned", "parentsigned-never", "unsigned-never2.txt", func(t *testing.T, response api.FileResponse) {
assert.False(t, response.Verification.Verified)
}))
})
}, false)
setting.Repository.Signing.CRUDActions = []string{"always"}
onGiteaRun(t, func(t *testing.T, u *url.URL) {
u.Path = baseAPITestContext.GitPath()
t.Run("Unsigned-Initial-CRUD-Always", func(t *testing.T) {
defer PrintCurrentTest(t)()
testCtx := NewAPITestContext(t, username, "initial-unsigned")
t.Run("CreateCRUDFile-Always", crudActionCreateFile(
t, testCtx, user, "master", "always", "signed-always.txt", func(t *testing.T, response api.FileResponse) {
assert.NotNil(t, response.Verification)
if response.Verification == nil {
assert.FailNow(t, "no verification provided with response! %v", response)
return
}
assert.True(t, response.Verification.Verified)
if !response.Verification.Verified {
t.FailNow()
return
}
assert.Equal(t, "gitea@fake.local", response.Verification.Signer.Email)
}))
t.Run("CreateCRUDFile-ParentSigned-always", crudActionCreateFile(
t, testCtx, user, "parentsigned", "parentsigned-always", "signed-parent2.txt", func(t *testing.T, response api.FileResponse) {
assert.NotNil(t, response.Verification)
if response.Verification == nil {
assert.FailNow(t, "no verification provided with response! %v", response)
return
}
assert.True(t, response.Verification.Verified)
if !response.Verification.Verified {
t.FailNow()
return
}
assert.Equal(t, "gitea@fake.local", response.Verification.Signer.Email)
}))
})
}, false)
setting.Repository.Signing.CRUDActions = []string{"parentsigned"}
onGiteaRun(t, func(t *testing.T, u *url.URL) {
u.Path = baseAPITestContext.GitPath()
t.Run("Unsigned-Initial-CRUD-ParentSigned", func(t *testing.T) {
defer PrintCurrentTest(t)()
testCtx := NewAPITestContext(t, username, "initial-unsigned")
t.Run("CreateCRUDFile-Always-ParentSigned", crudActionCreateFile(
t, testCtx, user, "always", "always-parentsigned", "signed-always-parentsigned.txt", func(t *testing.T, response api.FileResponse) {
assert.NotNil(t, response.Verification)
if response.Verification == nil {
assert.FailNow(t, "no verification provided with response! %v", response)
return
}
assert.True(t, response.Verification.Verified)
if !response.Verification.Verified {
t.FailNow()
return
}
assert.Equal(t, "gitea@fake.local", response.Verification.Signer.Email)
}))
})
}, false)
setting.Repository.Signing.InitialCommit = []string{"always"}
onGiteaRun(t, func(t *testing.T, u *url.URL) {
u.Path = baseAPITestContext.GitPath()
t.Run("AlwaysSign-Initial", func(t *testing.T) {
defer PrintCurrentTest(t)()
testCtx := NewAPITestContext(t, username, "initial-always")
t.Run("CreateRepository", doAPICreateRepository(testCtx, false))
t.Run("CheckMasterBranchSigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) {
assert.NotNil(t, branch.Commit)
if branch.Commit == nil {
assert.FailNow(t, "no commit provided with branch! %v", branch)
return
}
assert.NotNil(t, branch.Commit.Verification)
if branch.Commit.Verification == nil {
assert.FailNow(t, "no verification provided with branch commit! %v", branch.Commit)
return
}
assert.True(t, branch.Commit.Verification.Verified)
if !branch.Commit.Verification.Verified {
t.FailNow()
return
}
assert.Equal(t, "gitea@fake.local", branch.Commit.Verification.Signer.Email)
}))
})
}, false)
setting.Repository.Signing.CRUDActions = []string{"never"}
onGiteaRun(t, func(t *testing.T, u *url.URL) {
u.Path = baseAPITestContext.GitPath()
t.Run("AlwaysSign-Initial-CRUD-Never", func(t *testing.T) {
defer PrintCurrentTest(t)()
testCtx := NewAPITestContext(t, username, "initial-always-never")
t.Run("CreateRepository", doAPICreateRepository(testCtx, false))
t.Run("CreateCRUDFile-Never", crudActionCreateFile(
t, testCtx, user, "master", "never", "unsigned-never.txt", func(t *testing.T, response api.FileResponse) {
assert.False(t, response.Verification.Verified)
}))
})
}, false)
setting.Repository.Signing.CRUDActions = []string{"parentsigned"}
onGiteaRun(t, func(t *testing.T, u *url.URL) {
u.Path = baseAPITestContext.GitPath()
t.Run("AlwaysSign-Initial-CRUD-ParentSigned-On-Always", func(t *testing.T) {
defer PrintCurrentTest(t)()
testCtx := NewAPITestContext(t, username, "initial-always-parent")
t.Run("CreateRepository", doAPICreateRepository(testCtx, false))
t.Run("CreateCRUDFile-ParentSigned", crudActionCreateFile(
t, testCtx, user, "master", "parentsigned", "signed-parent.txt", func(t *testing.T, response api.FileResponse) {
assert.True(t, response.Verification.Verified)
if !response.Verification.Verified {
t.FailNow()
return
}
assert.Equal(t, "gitea@fake.local", response.Verification.Signer.Email)
}))
})
}, false)
setting.Repository.Signing.CRUDActions = []string{"always"}
onGiteaRun(t, func(t *testing.T, u *url.URL) {
u.Path = baseAPITestContext.GitPath()
t.Run("AlwaysSign-Initial-CRUD-Always", func(t *testing.T) {
defer PrintCurrentTest(t)()
testCtx := NewAPITestContext(t, username, "initial-always-always")
t.Run("CreateRepository", doAPICreateRepository(testCtx, false))
t.Run("CreateCRUDFile-Always", crudActionCreateFile(
t, testCtx, user, "master", "always", "signed-always.txt", func(t *testing.T, response api.FileResponse) {
assert.True(t, response.Verification.Verified)
if !response.Verification.Verified {
t.FailNow()
return
}
assert.Equal(t, "gitea@fake.local", response.Verification.Signer.Email)
}))
})
}, false)
var pr api.PullRequest
setting.Repository.Signing.Merges = []string{"commitssigned"}
onGiteaRun(t, func(t *testing.T, u *url.URL) {
u.Path = baseAPITestContext.GitPath()
t.Run("UnsignedMerging", func(t *testing.T) {
defer PrintCurrentTest(t)()
testCtx := NewAPITestContext(t, username, "initial-unsigned")
var err error
t.Run("CreatePullRequest", func(t *testing.T) {
pr, err = doAPICreatePullRequest(testCtx, testCtx.Username, testCtx.Reponame, "master", "never2")(t)
assert.NoError(t, err)
})
t.Run("MergePR", doAPIMergePullRequest(testCtx, testCtx.Username, testCtx.Reponame, pr.Index))
t.Run("CheckMasterBranchUnsigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) {
assert.NotNil(t, branch.Commit)
assert.NotNil(t, branch.Commit.Verification)
assert.False(t, branch.Commit.Verification.Verified)
assert.Empty(t, branch.Commit.Verification.Signature)
}))
})
}, false)
setting.Repository.Signing.Merges = []string{"basesigned"}
onGiteaRun(t, func(t *testing.T, u *url.URL) {
u.Path = baseAPITestContext.GitPath()
t.Run("BaseSignedMerging", func(t *testing.T) {
defer PrintCurrentTest(t)()
testCtx := NewAPITestContext(t, username, "initial-unsigned")
var err error
t.Run("CreatePullRequest", func(t *testing.T) {
pr, err = doAPICreatePullRequest(testCtx, testCtx.Username, testCtx.Reponame, "master", "parentsigned2")(t)
assert.NoError(t, err)
})
t.Run("MergePR", doAPIMergePullRequest(testCtx, testCtx.Username, testCtx.Reponame, pr.Index))
t.Run("CheckMasterBranchUnsigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) {
assert.NotNil(t, branch.Commit)
assert.NotNil(t, branch.Commit.Verification)
assert.False(t, branch.Commit.Verification.Verified)
assert.Empty(t, branch.Commit.Verification.Signature)
}))
})
}, false)
setting.Repository.Signing.Merges = []string{"commitssigned"}
onGiteaRun(t, func(t *testing.T, u *url.URL) {
u.Path = baseAPITestContext.GitPath()
t.Run("CommitsSignedMerging", func(t *testing.T) {
defer PrintCurrentTest(t)()
testCtx := NewAPITestContext(t, username, "initial-unsigned")
var err error
t.Run("CreatePullRequest", func(t *testing.T) {
pr, err = doAPICreatePullRequest(testCtx, testCtx.Username, testCtx.Reponame, "master", "always-parentsigned")(t)
assert.NoError(t, err)
})
t.Run("MergePR", doAPIMergePullRequest(testCtx, testCtx.Username, testCtx.Reponame, pr.Index))
t.Run("CheckMasterBranchUnsigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) {
assert.NotNil(t, branch.Commit)
assert.NotNil(t, branch.Commit.Verification)
assert.True(t, branch.Commit.Verification.Verified)
}))
})
}, false)
}
func crudActionCreateFile(t *testing.T, ctx APITestContext, user *models.User, from, to, path string, callback ...func(*testing.T, api.FileResponse)) func(*testing.T) {
return doAPICreateFile(ctx, path, &api.CreateFileOptions{
FileOptions: api.FileOptions{
BranchName: from,
NewBranchName: to,
Message: fmt.Sprintf("from:%s to:%s path:%s", from, to, path),
Author: api.Identity{
Name: user.FullName,
Email: user.Email,
},
Committer: api.Identity{
Name: user.FullName,
Email: user.Email,
},
},
Content: base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("This is new text for %s", path))),
}, callback...)
}
func importTestingKey(tmpDir, name, email string) (*openpgp.Entity, error) {
if _, _, err := process.GetManager().Exec("gpg --import integrations/private-testing.key", "gpg", "--import", "integrations/private-testing.key"); err != nil {
return nil, err
}
keyringFile, err := os.Open("integrations/private-testing.key")
if err != nil {
return nil, err
}
defer keyringFile.Close()
block, err := armor.Decode(keyringFile)
if err != nil {
return nil, err
}
keyring, err := openpgp.ReadKeyRing(block.Body)
if err != nil {
return nil, fmt.Errorf("Keyring access failed: '%v'", err)
}
// There should only be one entity in this file.
return keyring[0], nil
}
e29
backport/47339/stable30
backport/47349/stable28
backport/47349/stable29
backport/47349/stable30
backport/47399/stable30
backport/47425/stable28
backport/47425/stable29
backport/47425/stable30
backport/47441/stable29
backport/47510/stable29
backport/47515/stable29
backport/47527/stable30
backport/47628/stable29
backport/47640/stable29
backport/47649/stable28
backport/47649/stable29
backport/47670/stable30
backport/47737/stable30
backport/47745/stable28
backport/47756/stable29
backport/47756/stable30
backport/47801/stable30
backport/47807/stable29
backport/47824/stable30
backport/47832/stable28
backport/47832/stable29
backport/47832/stable30
backport/47834/stable28
backport/47834/stable29
backport/47834/stable30
backport/47846/stable28
backport/47846/stable29
backport/47846/stable30
backport/47847/stable28
backport/47847/stable29
backport/47847/stable30
backport/47848/stable28
backport/47848/stable29
backport/47848/stable30
backport/47852/stable30
backport/47853/stable29
backport/47854/stable28
backport/47854/stable29
backport/47854/stable30
backport/47858/stable28
backport/47858/stable29
backport/47858/stable30
backport/47860/stable28
backport/47860/stable29
backport/47881/stable29
backport/47881/stable30
backport/47883/stable29
backport/47883/stable30
backport/47896/stable28
backport/47896/stable29
backport/47896/stable30
backport/47905/stable29
backport/47905/stable30
backport/47910/stable28
backport/47910/stable29
backport/47910/stable30
backport/47914/stable28
backport/47914/stable29
backport/47914/stable30
backport/47920/stable28
backport/47920/stable29
backport/47920/stable30
backport/47924/stable28
backport/47924/stable29
backport/47924/stable30
backport/47928/stable28
backport/47928/stable29
backport/47928/stable30
backport/47933/stable28
backport/47933/stable29
backport/47933/stable30
backport/47954/stable28
backport/47954/stable29
backport/47954/stable30
backport/47971/stable28
backport/47971/stable29
backport/47971/stable30
backport/47986/stable28
backport/47986/stable29
backport/48008/stable28
backport/48008/stable29
backport/48008/stable30
backport/48013/stable28
backport/48013/stable29
backport/48013/stable30
backport/48014/stable28
backport/48014/stable29
backport/48014/stable30
backport/48015/stable28
backport/48015/stable29
backport/48015/stable30
backport/48016/stable29
backport/48016/stable30
backport/48017/stable28
backport/48017/stable29
backport/48017/stable30
backport/48028/stable30
backport/48030/stable28
backport/48030/stable29
backport/48030/stable30
backport/48031/stable29
backport/48031/stable30
backport/48037/stable30
backport/48043/stable28
backport/48043/stable29
backport/48043/stable30
backport/48044/stable29
backport/48044/stable30
backport/48045/stable28
backport/48045/stable29
backport/48045/stable30
backport/48050/stable28
backport/48050/stable29
backport/48050/stable30
backport/48063/stable30
backport/48080/stable28
backport/48080/stable29
backport/48080/stable30
backport/48081/stable28
backport/48081/stable29
backport/48081/stable30
backport/48090/stable29
backport/48090/stable30
backport/48094/stable28
backport/48094/stable29
backport/48094/stable30
backport/48114/stable28
backport/48114/stable29
backport/48114/stable30
backport/48134/stable30
backport/48140/stable30
backport/48142/stable25
backport/48142/stable26
backport/48142/stable27
backport/48142/stable28
backport/48142/stable29
backport/48145/stable28
backport/48145/stable29
backport/48145/stable30
backport/48153/stable30
backport/48160/stable30
backport/48162/stable30
backport/48177/stable28
backport/48177/stable29
backport/48177/stable30
backport/48205/stable28
backport/48205/stable29
backport/48207/stable28
backport/48207/stable29
backport/48207/stable30
backport/48215/stable30
backport/48222/stable30
backport/48224/stable30
backport/48227/stable30
backport/48235/stable29
backport/48235/stable30
backport/48266/stable28
backport/48266/stable29
backport/48266/stable30
backport/48268/stable28
backport/48268/stable29
backport/48268/stable30
backport/48282/stable24
backport/48282/stable25
backport/48282/stable26
backport/48282/stable27
backport/48282/stable28
backport/48282/stable29
backport/48294/master
backport/48297/stable25
backport/48297/stable26
backport/48307/stable28
backport/48307/stable29
backport/48307/stable30
backport/48311/stable29
backport/48311/stable30
backport/48315/stable28
backport/48331/stable28
backport/48331/stable29
backport/48331/stable30
backport/48345/stable28
backport/48345/stable29
backport/48345/stable30
backport/48354/stable28
backport/48354/stable29
backport/48354/stable30
backport/48356/stable30
backport/48359/stable25
backport/48359/stable26
backport/48359/stable27
backport/48359/stable28
backport/48359/stable29
backport/48359/stable30
backport/48361/stable28
backport/48361/stable29
backport/48361/stable30
backport/48366/stable28
backport/48366/stable29
backport/48366/stable30
backport/48373/stable28
backport/48373/stable29
backport/48373/stable30
backport/48375/stable28
backport/48375/stable29
backport/48375/stable30
backport/48381/stable30
backport/48425/stable29
backport/48425/stable30
backport/48426/stable28
backport/48426/stable29
backport/48426/stable30
backport/48437/stable28
backport/48437/stable29
backport/48437/stable30
backport/48439/stable30
backport/48445/stable27
backport/48451/stable29
backport/48451/stable30
backport/48466/stable28
backport/48466/stable29
backport/48466/stable30
backport/48480/stable30
backport/48484/stable29
backport/48484/stable30
backport/48486/stable30
backport/48508/stable30
backport/48510/stable25
backport/48510/stable26
backport/48510/stable27
backport/48512/stable30
backport/48513/stable30
backport/48519/stable29
backport/48519/stable30
backport/48520/stable30
backport/48522/stable30
backport/48532/stable28
backport/48532/stable29
backport/48532/stable30
backport/48538/stable30
backport/48539/stable28
backport/48539/stable29
backport/48540/stable30
backport/48542/stable30
backport/48543/stable30
backport/48548/stable30
backport/48559/stable30
backport/48563/stable30
backport/48572/stable30
backport/48583/stable28
backport/48583/stable29
backport/48583/stable30
backport/48584/stable28
backport/48584/stable29
backport/48584/stable30
backport/48597/stable28
backport/48597/stable29
backport/48597/stable30
backport/48600/stable28
backport/48600/stable29
backport/48600/stable30
backport/48603/stable28
backport/48603/stable29
backport/48603/stable30
backport/48619/stable30
backport/48623/stable28
backport/48623/stable29
backport/48623/stable30
backport/48625/stable29
backport/48625/stable30
backport/48628/stable30
backport/48632/stable29
backport/48632/stable30
backport/48638/stable30
backport/48665/stable30
backport/48673/stable28
backport/48673/stable29
backport/48673/stable30
backport/48675/stable28
backport/48675/stable29
backport/48675/stable30
backport/48682/stable28
backport/48682/stable29
backport/48682/stable30
backport/48684/stable28
backport/48684/stable29
backport/48684/stable30
backport/48689/stable29
backport/48689/stable30
backport/48696/stable28
backport/48696/stable29
backport/48696/stable30
backport/48723/stable30
backport/48728/stable30
backport/48736/stable27
backport/48736/stable28
backport/48736/stable29
backport/48736/stable30
backport/48737/stable30
backport/48743/stable29
backport/48743/stable30
backport/48749/stable27
backport/48760/stable30
backport/48766/stable28
backport/48766/stable29
backport/48766/stable30
backport/48769/stable29
backport/48769/stable30
backport/48787/stable30
backport/48788/stable27
backport/48788/stable28
backport/48788/stable29
backport/48788/stable30
backport/48799/stable30
backport/48809/stable30
backport/48824/stable29
backport/48833/stable30
backport/48839/stable28
backport/48839/stable29
backport/48839/stable30
backport/48850/stable30
backport/48852/stable30
backport/48853/stable30
backport/48854/stable30
backport/48863/stable30
backport/48871/stable29
backport/48871/stable30
backport/48882/stable30
backport/48887/stable29
backport/48887/stable30
backport/48889/stable28
backport/48898/stable28
backport/48898/stable29
backport/48898/stable30
backport/48912/stable30
backport/48915/stable28
backport/48915/stable29
backport/48915/stable30
backport/48917/stable25
backport/48917/stable26
backport/48917/stable27
backport/48917/stable28
backport/48917/stable29
backport/48917/stable30
backport/48918/stable28
backport/48918/stable29
backport/48918/stable30
backport/48921/stable25
backport/48921/stable26
backport/48921/stable27
backport/48921/stable28
backport/48921/stable29
backport/48921/stable30
backport/48933/stable28
backport/48933/stable29
backport/48933/stable30
backport/48934/stable28
backport/48947/stable28
backport/48947/stable29
backport/48947/stable30
backport/48991/stable29
backport/48991/stable30
backport/48992/stable27
backport/48992/stable28
backport/48992/stable29
backport/48992/stable30
backport/49004/stable28
backport/49004/stable29
backport/49004/stable30
backport/49009/49009-stable29
backport/49009/stable25
backport/49009/stable26
backport/49009/stable27
backport/49009/stable28
backport/49009/stable30
backport/49017/stable28
backport/49017/stable29
backport/49017/stable30
backport/49023/stable28
backport/49023/stable29
backport/49023/stable30
backport/49039/stable30
backport/49053/stable28
backport/49053/stable29
backport/49053/stable30
backport/49057/master
backport/49065/stable28
backport/49065/stable29
backport/49065/stable30
backport/49075/stable30
backport/49076/stable28
backport/49076/stable29
backport/49112/stable28
backport/49112/stable29
backport/49112/stable30
backport/49115/stable28
backport/49115/stable30
backport/49130/stable29
backport/49130/stable30
backport/49134/stable30
backport/49139/stable28
backport/49139/stable29
backport/49139/stable30
backport/49143/stable28
backport/49143/stable29
backport/49143/stable30
backport/49146/stable28
backport/49146/stable29
backport/49146/stable30
backport/49147/stable30
backport/49150/stable28
backport/49150/stable29
backport/49150/stable30
backport/49153/stable28
backport/49153/stable29
backport/49176/stable30
backport/49196/stable28
backport/49196/stable29
backport/49196/stable30
backport/49199/stable28
backport/49199/stable29
backport/49199/stable30
backport/49203/stable29
backport/49203/stable30
backport/49208/stable29
backport/49208/stable30
backport/49209/stable30
backport/49218/stable28
backport/49218/stable29
backport/49218/stable30
backport/49219/stable30
backport/49225/stable28
backport/49225/stable29
backport/49225/stable30
backport/49226/stable30
backport/49232/stable28
backport/49232/stable29
backport/49232/stable30
backport/49237/stable30
backport/49260/stable30
backport/49262/stable28
backport/49262/stable29
backport/49271/stable29
backport/49271/stable30
backport/49281/stable30
backport/49288/stable29
backport/49288/stable30
backport/49293/stable30
backport/49308/stable29
backport/49308/stable30
backport/49311/stable28
backport/49311/stable29
backport/49311/stable30
backport/49315/stable28
backport/49315/stable29
backport/49315/stable30
backport/49332/stable28
backport/49332/stable29
backport/49332/stable30
backport/49346/stable30
backport/49351/stable29
backport/49351/stable30
backport/49357/stable30
backport/49361/stable28
backport/49361/stable29
backport/49361/stable30
backport/49372/stable28
backport/49372/stable29
backport/49372/stable30
backport/49373/stable29
backport/49380/stable30
backport/49384/master
backport/49398/stable29
backport/49398/stable30
backport/49432/master
backport/49432/stable30
backport/49434/stable30
backport/49442/stable28
backport/49442/stable29
backport/49442/stable30
backport/49451/stable29
backport/49451/stable30
backport/49454/stable28
backport/49454/stable29
backport/49454/stable30
backport/49459/stable30
backport/49464/stable28
backport/49464/stable29
backport/49464/stable30
backport/49477/stable30
backport/49489/stable30
backport/49493/stable28
backport/49494/stable29
backport/49494/stable29-squashed
backport/49494/stable30
backport/49503/stable28
backport/49503/stable29
backport/49503/stable30
backport/49528/stable28
backport/49528/stable29
backport/49528/stable30
backport/49551/stable29
backport/49551/stable30
backport/49557/stable30
backport/49569/stable29
backport/49569/stable30
backport/49581/stable28
backport/49581/stable30
backport/49587/stable30
backport/49588/stable29
backport/49588/stable30
backport/49602/stable28
backport/49602/stable29
backport/49602/stable30
backport/49629/stable29
backport/49631/stable29
backport/49677/stable30
backport/49681/stable29
backport/49681/stable30
backport/49685/stable28
backport/49685/stable29
backport/49685/stable30
backport/49693/stable29
backport/49693/stable30
backport/49694/stable30
backport/49746/stable30
backport/49747/stable27
backport/49747/stable28
backport/49747/stable29
backport/49747/stable30
backport/49799/stable28
backport/49799/stable29
backport/49799/stable30
backport/49801/stable30
backport/49803/stable29
backport/49803/stable30
backport/49815/stable28
backport/49815/stable29
backport/49822/stable28
backport/49822/stable29
backport/49832/stable30
backport/49839/stable29
backport/49839/stable30
backport/49843/stable29
backport/49843/stable30
backport/49847/stable30
backport/49880/stable28
backport/49880/stable30
backport/49885/stable30
backport/49887/stable29
backport/49887/stable30
backport/49900/stable29
backport/49917/stable30
backport/49927/stable28
backport/49973/master
backport/49974/stable29
backport/49974/stable30
backport/50017/stable29
backport/50017/stable30
backport/50025/stable29
backport/50025/stable30
backport/50026/stable29
backport/50026/stable30
backport/cachebuster-stable30
backport/dav-get
backportArrayKeySetupCheks
block-dav-move-parent
bug/19494/insert-ignore-conflict-for-filecache-extended
bug/48518/ignore-invalid-dates
bug/48678/restore-dav-error-response
bug/49395/handle-multiple-tags
bug/noid/codeowners-caldav-carddav
bug/noid/drop-group-exists-cache-fetch-list-of-groups
bug/noid/federated-addressbook-sync-without-localaddressallowed
bug/noid/more-routing-weirdness
bug/noid/profile-clear-not-working
bug/noid/skip-exceptions-in-transfer-ownership
bug/noid/weird-ldap-caching
bugfix/45481/controller-parameter-overwrite
bugfix/47658/dont-fail-precondition-if-unset
bugfix/cleanup-s3-multipart
bugfix/error-on-reshare-after-transfer-ownership
bugfix/exception-appscreenshot-notstring
bugfix/fix-service-worker-scope
bugfix/noid/add-missing-blurhash
bugfix/noid/allow-to-fail-fake-AI-providers
bugfix/noid/allow-to-force-db-throttler
bugfix/noid/allow-to-get-permissions-of-a-principal
bugfix/noid/array-keys
bugfix/noid/censor-more-values
bugfix/noid/compatibility-with-30
bugfix/noid/consistent-handling-of-SensitiveParameter
bugfix/noid/copy-better-typing-from-notifications-app
bugfix/noid/create-a-gap-before-files
bugfix/noid/document-icon-requirements
bugfix/noid/fix-download-activity-parameters
bugfix/noid/fix-oauth2-owncloud-migration
bugfix/noid/fix-otf-loading
bugfix/noid/fix-rtl-language-list
bugfix/noid/fix-tainted-file-appinfo
bugfix/noid/improve-installation-speed-of-oracle
bugfix/noid/increase-exclude-list
bugfix/noid/mark-more-configs-as-sensitive
bugfix/noid/more-reliable-tests
bugfix/noid/oracle-federation
bugfix/noid/prevent-infitnite-loop
bugfix/noid/remove-3rdparty-use
bugfix/noid/remove-more-withConsecutive
bugfix/noid/run-all-unit-tests
bugfix/noid/skip-future-shipped-apps-from-updatenotification-check
bugfix/noid/update-opendyslexic
bugfix/noid/update-phpunit
bugfix/noid/validate-parameter-keys
build/autoloader/remove-noisy-changes
build/psalm/unstable-namespace
build/translation-checker-print-rtl-limited-characters
cache-delete-notfound-size
catchNullHash
certificate-manager-fallback
check-phpoutdated
checkColExists
chore/48408/rename-twitter-to-x
chore/48409/replace-diaspora-and-twitter
chore/add-deprecation-date
chore/cleanup-warnings
chore/deps/nextcloud-calendar-availability-vue-2.2.5
chore/deps/nextcloud-coding-standard
chore/deps/openapi-extractor
chore/drop-skjnldsv/sanitize-svg
chore/files-consolitate-route-logic
chore/force-style-lint
chore/gender-neutral-language
chore/github/groupware-code-owners-update
chore/lazy-mount-providers
chore/legacy-updatenotification
chore/migrate-encryption-away-from-hooks
chore/migrate-vite
chore/ncselect-label-warning
chore/nextcloud-dialogs
chore/nextcloud-dialogs-master
chore/nextcloud-dialogs-stable29
chore/nextcloud-vue-8.13.0
chore/node-moved-old-node
chore/noid/coverage
chore/noid/git-blame-ignore-revs
chore/prepare-oc_repair-unit10
chore/remove-deprecated-aliases
chore/remove-ijob-execute
chore/remove-ilogger
chore/remove-legacy-files-scripts
chore/remove-legacy-settings-fors
chore/remove-old-test
chore/remove-travis
chore/update-gw-codeowners-2
chore/update-nc-libs-stable29
chore/update-nc-libs-stable30
chore/update-sass-loader
chore/update_mysql_setup_check_i18n
chore/use-nextcloud-cypress-docker-node
chore/use-public-api-helper
ci-fix-30
ci/49145/php-8.4-external-storages
ci/noid/debug-broken-ci
ci/noid/enable-required-php-extensions
ci/noid/improve-running-psalm-locally
ci/noid/php-8.4
ci/noid/prepare-phpunit-10
ci/noid/require-up-to-date-psalm-paseline
ci/noid/skip-other-vendor-bins-when-only-running-psalm
ci/noid/try-to-fix-smb-kerberos
ci/noid/update-integration-test-stuff
ci/oracle
ci/oracle-2
ci/phpunit-10
ci/psalm/imagick-extension
ci/revert/47342
clean/version-ocp
cleanup/event/trashbin
clear-pending-two-factor-tokens-also-from-configuration
clearKeysInBatches
config-carddav-sync-request-timeout
container-optimizations
contctsinteraction-usersetting
copy-share-unmasked
copy-update-cache-excluded
dav-fix-birthday-sync
dav-open-log-path
dav-push-sync
dav-webcal-default-refresh-rate
davTagColor
db-error-logging-27
db-error-logging-28
dbQueriesExecStmt
dbQueriesExecStmt2
dbQueriesExecStmt3
dbQueriesToMaster
debt/noid/ignore-docker-image-lock-file
debt/noid/user-changed-event
debug-cypress-grid-view
debug-file-exists-backtrace
debug/66440/logs-for-debugging-slow-user-list
debug/doctrine/dbal
debug/noid/imaginary
debug/noid/log-ram-usage-with-threshold
debug/noid/log-reason-token-mismatch
debug/noid/log-reason-token-mismatch-stable27
debug/preview-invalid-id
debug/snae
def-share-provider-filecache-joins
deleteExistingTarget
dependabot/composer/aws/aws-sdk-php-3.324.13
dependabot/composer/build/integration/behat/behat-3.17.0
dependabot/composer/doctrine/dbal-3.9.x
dependabot/composer/doctrine/dbal-4.0.4
dependabot/composer/giggsey/libphonenumber-for-php-lite-8.13.45
dependabot/composer/giggsey/libphonenumber-for-php-lite-8.13.48
dependabot/composer/guzzlehttp/guzzle-7.9.2
dependabot/composer/laravel/serializable-closure-1.3.5
dependabot/composer/mlocati/ip-lib-1.18.1
dependabot/composer/sabre/dav-4.7.0
dependabot/composer/stable28/aws/aws-sdk-php-3.240.11
dependabot/composer/stable30/doctrine/dbal-3.9.1
dependabot/composer/stable30/giggsey/libphonenumber-for-php-lite-8.13.45
dependabot/composer/stable30/guzzlehttp/guzzle-7.8.2
dependabot/composer/stable30/laravel/serializable-closure-1.3.5
dependabot/composer/stable30/symfony-6.4
dependabot/composer/stable30/web-auth/webauthn-lib-4.8.7
dependabot/composer/symfony-6.4
dependabot/composer/symfony/string-6.4.13
dependabot/composer/vendor-bin/cs-fixer/nextcloud/coding-standard-1.3.0
dependabot/composer/vendor-bin/cs-fixer/nextcloud/coding-standard-1.3.2
dependabot/composer/vendor-bin/openapi-extractor/nextcloud/openapi-extractor-1.0.1
dependabot/composer/vendor-bin/openapi-extractor/nextcloud/openapi-extractor-1.1.0
dependabot/composer/vendor-bin/openapi-extractor/nextcloud/openapi-extractor-1.2.2
dependabot/composer/vendor-bin/openapi-extractor/nextcloud/openapi-extractor-1.3.0
dependabot/composer/web-auth/webauthn-lib-4.9.1
dependabot/github_actions/github-actions-52fdf4f9c4
dependabot/github_actions/github-actions-560ea78344
dependabot/github_actions/github-actions-74498d6e3a
dependabot/github_actions/github-actions-aa3137d618
dependabot/npm_and_yarn/babel-loader-9.2.1
dependabot/npm_and_yarn/babel/node-7.25.7
dependabot/npm_and_yarn/babel/node-7.26.0
dependabot/npm_and_yarn/babel/plugin-transform-private-methods-7.25.4
dependabot/npm_and_yarn/babel/plugin-transform-private-methods-7.25.7
dependabot/npm_and_yarn/babel/plugin-transform-private-methods-7.25.9
dependabot/npm_and_yarn/core-js-3.39.0
dependabot/npm_and_yarn/cross-spawn-7.0.6
dependabot/npm_and_yarn/cypress-13.15.0
dependabot/npm_and_yarn/debounce-2.1.1
dependabot/npm_and_yarn/debounce-2.2.0
dependabot/npm_and_yarn/dompurify-3.1.7
dependabot/npm_and_yarn/elliptic-6.6.0
dependabot/npm_and_yarn/eslint-plugin-cypress-4.1.0
dependabot/npm_and_yarn/focus-trap-7.6.0
dependabot/npm_and_yarn/jquery-ui-1.14.0
dependabot/npm_and_yarn/jquery-ui-1.14.1
dependabot/npm_and_yarn/libphonenumber-js-1.11.16
dependabot/npm_and_yarn/libphonenumber-js-1.11.17
dependabot/npm_and_yarn/libphonenumber-js-1.11.9
dependabot/npm_and_yarn/marked-14.1.1
dependabot/npm_and_yarn/marked-15.0.0
dependabot/npm_and_yarn/marked-15.0.4
dependabot/npm_and_yarn/mime-4.0.6
dependabot/npm_and_yarn/multi-206390e743
dependabot/npm_and_yarn/multi-2299424a7d
dependabot/npm_and_yarn/multi-9423f4c335
dependabot/npm_and_yarn/multi-cf87d80143
dependabot/npm_and_yarn/multi-d66d039ac5
dependabot/npm_and_yarn/nanoid-3.3.8
dependabot/npm_and_yarn/nextcloud/axios-2.5.1
dependabot/npm_and_yarn/nextcloud/calendar-availability-vue-2.2.4
dependabot/npm_and_yarn/nextcloud/cypress-1.0.0-beta.12
dependabot/npm_and_yarn/nextcloud/cypress-1.0.0-beta.9
dependabot/npm_and_yarn/nextcloud/upload-1.6.1
dependabot/npm_and_yarn/nextcloud/vue-8.19.0
dependabot/npm_and_yarn/nextcloud/vue-8.20.0
dependabot/npm_and_yarn/pinia-2.2.6
dependabot/npm_and_yarn/pinia-2.3.0
dependabot/npm_and_yarn/pinia/testing-0.1.6
dependabot/npm_and_yarn/pinia/testing-0.1.7
dependabot/npm_and_yarn/puppeteer-23.10.4
dependabot/npm_and_yarn/puppeteer-23.4.1
dependabot/npm_and_yarn/puppeteer-23.5.0
dependabot/npm_and_yarn/query-string-9.1.1
dependabot/npm_and_yarn/sass-1.79.3
dependabot/npm_and_yarn/sass-1.81.0
dependabot/npm_and_yarn/sass-loader-16.0.3
dependabot/npm_and_yarn/simplewebauthn/browser-11.0.0
dependabot/npm_and_yarn/simplewebauthn/types-12.0.0
dependabot/npm_and_yarn/stable28/babel/preset-typescript-7.24.7
dependabot/npm_and_yarn/stable28/browserslist-useragent-regexp-4.1.3
dependabot/npm_and_yarn/stable28/cypress-13.13.3
dependabot/npm_and_yarn/stable28/cypress-if-1.12.6
dependabot/npm_and_yarn/stable28/cypress/vue2-2.1.1
dependabot/npm_and_yarn/stable28/dompurify-3.1.7
dependabot/npm_and_yarn/stable28/karma-6.4.4
dependabot/npm_and_yarn/stable28/libphonenumber-js-1.10.64
dependabot/npm_and_yarn/stable28/moment-timezone-0.5.46
dependabot/npm_and_yarn/stable28/nextcloud/calendar-availability-vue-2.2.4
dependabot/npm_and_yarn/stable28/nextcloud/cypress-1.0.0-beta.10
dependabot/npm_and_yarn/stable28/nextcloud/cypress-1.0.0-beta.12
dependabot/npm_and_yarn/stable28/nextcloud/cypress-1.0.0-beta.9
dependabot/npm_and_yarn/stable28/nextcloud/dialogs-5.3.8
dependabot/npm_and_yarn/stable28/nextcloud/moment-1.3.2
dependabot/npm_and_yarn/stable28/nextcloud/password-confirmation-5.1.1
dependabot/npm_and_yarn/stable28/nextcloud/sharing-0.2.4
dependabot/npm_and_yarn/stable28/pinia-2.2.8
dependabot/npm_and_yarn/stable28/pinia/testing-0.1.6
dependabot/npm_and_yarn/stable28/pinia/testing-0.1.7
dependabot/npm_and_yarn/stable28/testing-library/jest-dom-6.4.8
dependabot/npm_and_yarn/stable28/types/jest-29.5.14
dependabot/npm_and_yarn/stable28/underscore-1.13.7
dependabot/npm_and_yarn/stable29/jquery-ui-1.13.3
dependabot/npm_and_yarn/stable29/jsdoc-4.0.3
dependabot/npm_and_yarn/stable29/jsdoc-4.0.4
dependabot/npm_and_yarn/stable29/mime-4.0.6
dependabot/npm_and_yarn/stable29/moment-timezone-0.5.46
dependabot/npm_and_yarn/stable29/nextcloud/cypress-1.0.0-beta.12
dependabot/npm_and_yarn/stable29/nextcloud/sharing-0.2.4
dependabot/npm_and_yarn/stable29/nextcloud/upload-1.7.1
dependabot/npm_and_yarn/stable29/nextcloud/vue-8.17.1
dependabot/npm_and_yarn/stable29/pinia/testing-0.1.7
dependabot/npm_and_yarn/stable29/throttle-debounce-5.0.2
dependabot/npm_and_yarn/stable29/types/jest-29.5.14
dependabot/npm_and_yarn/stable29/vue-material-design-icons-5.3.1
dependabot/npm_and_yarn/stable29/vueuse/components-10.11.1
dependabot/npm_and_yarn/stable29/vueuse/core-10.11.1
dependabot/npm_and_yarn/stable29/vueuse/integrations-10.11.1
dependabot/npm_and_yarn/stable30/cypress-13.13.3
dependabot/npm_and_yarn/stable30/cypress-if-1.12.6
dependabot/npm_and_yarn/stable30/debounce-2.1.1
dependabot/npm_and_yarn/stable30/dompurify-3.1.7
dependabot/npm_and_yarn/stable30/jsdoc-4.0.4
dependabot/npm_and_yarn/stable30/libphonenumber-js-1.11.10
dependabot/npm_and_yarn/stable30/libphonenumber-js-1.11.11
dependabot/npm_and_yarn/stable30/libphonenumber-js-1.11.16
dependabot/npm_and_yarn/stable30/libphonenumber-js-1.11.9
dependabot/npm_and_yarn/stable30/mime-4.0.6
dependabot/npm_and_yarn/stable30/moment-timezone-0.5.46
dependabot/npm_and_yarn/stable30/nextcloud/axios-2.5.1
dependabot/npm_and_yarn/stable30/nextcloud/calendar-availability-vue-2.2.4
dependabot/npm_and_yarn/stable30/nextcloud/files-3.10.1
dependabot/npm_and_yarn/stable30/nextcloud/moment-1.3.2
dependabot/npm_and_yarn/stable30/nextcloud/sharing-0.2.4
dependabot/npm_and_yarn/stable30/nextcloud/upload-1.7.1
dependabot/npm_and_yarn/stable30/pinia/testing-0.1.5
dependabot/npm_and_yarn/stable30/pinia/testing-0.1.6
dependabot/npm_and_yarn/stable30/pinia/testing-0.1.7
dependabot/npm_and_yarn/stable30/query-string-9.1.1
dependabot/npm_and_yarn/stable30/types/dockerode-3.3.32
dependabot/npm_and_yarn/stable30/types/jest-29.5.13
dependabot/npm_and_yarn/stable30/types/jest-29.5.14
dependabot/npm_and_yarn/stable30/underscore-1.13.7
dependabot/npm_and_yarn/stable30/vue-material-design-icons-5.3.1
dependabot/npm_and_yarn/stable30/vueuse/components-10.11.1
dependabot/npm_and_yarn/stable30/vueuse/core-10.11.1
dependabot/npm_and_yarn/stable30/vueuse/integrations-10.11.1
dependabot/npm_and_yarn/testing-library/jest-dom-6.6.3
dependabot/npm_and_yarn/tslib-2.7.0
dependabot/npm_and_yarn/types/dockerode-3.3.32
dependabot/npm_and_yarn/typescript-5.6.2
dependabot/npm_and_yarn/vitejs/plugin-vue2-2.3.3
dependabot/npm_and_yarn/vitest/coverage-v8-2.1.1
dependabot/npm_and_yarn/vitest/coverage-v8-2.1.5
dependabot/npm_and_yarn/vitest/coverage-v8-2.1.8
dependabot/npm_and_yarn/vue-material-design-icons-5.3.1
dependabot/npm_and_yarn/vueuse/components-11.1.0
dependabot/npm_and_yarn/vueuse/core-11.3.0
dependabot/npm_and_yarn/vueuse/integrations-11.1.0
dependabot/npm_and_yarn/wait-on-8.0.0
dependabot/npm_and_yarn/wait-on-8.0.1
dependabot/npm_and_yarn/webdav-5.7.1
dependabot/npm_and_yarn/workbox-webpack-plugin-7.3.0
dependabot/npm_and_yarn/zip.js/zip.js-2.7.53
dependabot/npm_and_yarn/zip.js/zip.js-2.7.54
dependaniel/aws-sdk-for-28
dependaniel/aws-sdk-for-29
deps/noid/bump-3rdparty-hash
dept-remove-csrf-dependency-from-request
detect-inadvertent-config-overlaps
direct-access-shared-calendar
encoding-wrapper-metadata
encryption-version-version
enh/30551/weather-status-support-more-codes
enh/add-details-to-code-integrity-check
enh/add-first-login-timestamp
enh/add-rich-object-formatter
enh/add-user-creation-date
enh/displayname-group-search
enh/do-not-enforce-cache-for-cli
enh/favorite-search
enh/identityproof/key_storage
enh/issue-48528-disable-imip-messages
enh/issues-563-calendar-import-export
enh/more-task-types
enh/no-issues/share-entry-link
enh/noid/allow-configure-config.owner
enh/noid/avatar-chinese
enh/noid/disable-user-unmount
enh/noid/fix-personal-settings-layout
enh/noid/fix-properties-files
enh/noid/gs.federation.auto_accept_shares
enh/noid/navigationentryevent
enh/noid/returns-formated-app-values-2
enh/noid/signed-request
enh/noid/taskprocessing-commands-task-errors
enh/noid/taskprocessing-include-error-msg-in-tasks
enh/noid/testing-namespace
enh/noid/update-o.c.u-wording
enh/noid/user-preferences
enh/repair-mimetype-job
enh/test-mtime-after-move
enh/trashbin-scan-command
enh/users-configured-quota-value
enhancement/passwordless-login-token
ensureTemplateFolder
ernolf/configurable_sharetoken_length
feat-setupcheck-php-sapi-fpm-max-children
feat/26668/notifications-for-shared-calendars-2
feat/31420/bidi-backend-support
feat/45085/validate-config-values
feat/46528/ask-confirm-extension-change
feat/add-addressbook-list-command
feat/add-datetime-qbmapper-support
feat/add-mount-change-log
feat/add-proofread-tasktype
feat/add-query-param-to-force-language
feat/add-rector-config
feat/add-subscription-via-occ
feat/allow-account-local-search
feat/allow-enum-entity
feat/allow-getter-setter-decl-fors
feat/allow-oauth-grant-bypass
feat/auto-accept-trusted-server
feat/caption-cant-upload
feat/check-enterprise
feat/clipboard-fallback
feat/contacts-menu/js-hook-action
feat/core/features-api
feat/cors-on-webdav
feat/database/primary-replica-split-stable28
feat/database/query-result-fetch-associative-fetch-num
feat/dav-pagination
feat/dav-trashbin-backend
feat/dav/calendar-object-admin-audit-log
feat/declarative-settings/typed-abstraction
feat/disable-share-deletion
feat/dispatcher/log-raw-response-data
feat/edit-share-token
feat/empty-trash
feat/expose-nc-groups-to-system-addressbook-contacts
feat/file-conversion-provider
feat/file-list-actions
feat/files-bulk-tagging
feat/files-bulk-tagging-followup
feat/files-shortcuts
feat/files-shortcuts-2
feat/files/chunked-upload-config-capabilities
feat/files/resumable-uploads
feat/files_sharing/co-owner
feat/issue-3786-allow-shared-calendars
feat/issue-994-two-factor-api
feat/log-large-assets
feat/logger-allow-psr-loglevel
feat/mail-provider-settings
feat/make-setup-check-trait-public
feat/make-tasks-types-toggleable
feat/namespace-group-route
feat/nfo
feat/node-dist
feat/noid/add-fake-summary-provider
feat/noid/happy-birthday
feat/noid/lexicon-configurable-default-value
feat/noid/priority-notifications
feat/noid/ratelimit-header
feat/noid/support-email-mentions
feat/occ-files-cleanup-help
feat/ocp/meetings-api-requirements
feat/pagination-cardav
feat/photo-cache-webp
feat/php-setup-file-upload
feat/postgres-13-17
feat/profile-app
feat/public-log-level
feat/reduce_available_languages_set
feat/restore-to-original-dir
feat/restrict-tag-creation
feat/row_format_check
feat/search-by-parent-id
feat/settings/advanced-deploy-options
feat/settings/app_api_apps_management
feat/settings/too-much-caching-setup-check
feat/sharing-title
feat/shipped/app_api
feat/switch-from-settype-to-casts
feat/systemtags-bulk-create-list
feat/systemtags-missing-attrs
feat/systemtags-public
feat/tags-colors
feat/tags-colors-2
feat/taskprocessing/TextToImageSingle
feat/verbose-cron
feat/workflow-auto-update-cypress.yml
feat/workflow-auto-update-reuse.yml
feat/zip-folder-plugin
feat/zst
feature/23308/create-new-favorite-dashboard-widget
feature/add-allowed-view-extensions-config
feature/files-list-occ-command
feature/noid/config-lexicon
feature/noid/wrapped-appconfig
feature/settings-design-improvements
fieat/profile-pronounces
file-info-key-location-27
filecache-chunking
files-external-setup-path
filesVersionsFuncRefact
fix-44318-remote-share-not-listed
fix-copying-or-moving-from-shared-groupfolders
fix-dav-properties-column-type
fix-federated-group-shares-when-no-longer-found-in-remote-server
fix-files-external-smbclient-deprecated-binaryfinder
fix-nc-env-inclusion
fix-papercut-23486-weather-status-locale
fix-remove-auto-guessing-for-preview-semaphore
fix-setupcheck-filelocking
fix-setupcheck-webfinger-400
fix-setupchecks-normalizeUrl-url-filter
fix-show-original-owner
fix-updater-secret
fix/43260
fix/44288/catch-filesmetadatanotfound-exception
fix/45717/hide-last-modified-for-shipped-apps
fix/45884/accept-notification
fix/46920/respect-no-download
fix/47275/driverException
fix/47658/upgrade-version-3100005
fix/48012/fix-share-email-send-mail-share
fix/48415/do-not-rename-main-share-link
fix/48437/dont-exclude-user
fix/48829/visual-feedback-4-encryption-toggle
fix/48860/stop-silent-expiry-date-addition-on-link-shares
fix/48993
fix/49473/task-url
fix/788/add-password-confirmation-required-to-user-storage-create
fix/788/add-password-required-to-external-storages
fix/AppStore--remove-unneeded-warning
fix/activity-log-for-favorites-in-dav
fix/add-function-type-for-mimetype-sanitizer
fix/add-password-confirmation-to-save-global-creds
fix/adjust-default-color-background-plain-to-new-background
fix/ai-settings
fix/align-avatar-visibility
fix/allow-enforcing-windows-support
fix/allow-quota-wrapper-check
fix/app-discover
fix/app-store-groups
fix/app-store-markdown
fix/app-store-reactivity
fix/app-store-remove-force-enable
fix/appconfig/sensitive-keys-external-jwt-private-key
fix/appframework/csrf-request-checks
fix/apps/wrong-missing-casts
fix/appstore-regressions
fix/auth-token-uniq-constraint-violation-handling
fix/auth/authtoken-activity-update-in-transaction
fix/avoid-invalid-share-on-transfer-ownership
fix/background-image
fix/backgroundjobs/adjust-intervals-time-sensitivities
fix/baseresponse/xml-element-value-string-cast
fix/better-drag-n-drop
fix/bring-back-zip-event
fix/broken-event-notifications
fix/cachebuster-stable30
fix/caldav/event-organizer-interaction
fix/caldav/event-reader-duration
fix/carddav/create-sab-concurrently
fix/cast-node-names-to-string
fix/clarify-app-manager-methods
fix/cloud-id-input
fix/comment/children-count-integer
fix/config/additional-configs
fix/contactsmigratortest
fix/core-session-logout-logging
fix/cron-strict-cookie
fix/cron/log-long-running-jobs-stable26
fix/dashboard--performance-and-refactoring
fix/datadirectory-protection-setupcheck
fix/dav-add-strict-type-declarations
fix/dav-cast-content-lenght-to-int
fix/dav-cast-params-to-string
fix/dav/abort-incomplete-caldav-changes-sync
fix/dav/carddav-read-card-memory-usage
fix/dav/image-export-plugin-fallback
fix/dav/limit-sync-token-created-at-updates-stable28
fix/dav/limit-sync-token-created-at-updates-stable29
fix/dav/view-only-check
fix/declarative-settings-priority
fix/deps/php-seclin
fix/do-not-throw-from-countusers
fix/download-non-files-view
fix/drop-v-html
fix/duplicated-conflict-resolution
fix/edit-locally-labels
fix/empty-file-0byte-stable30
fix/encode-guest-file-request
fix/encrypt-decrypt-password
fix/encryption/web-ui-bogus
fix/entity/strict-types
fix/eslint-warning
fix/eslint-warnings
fix/etag-constraint-search-query
fix/external-storage-controller-cast-id
fix/external-storage-int
fix/fail-safe-files-actions
fix/federated-users
fix/federation-certificate-store
fix/file-list-filters-reset
fix/file-type-filter-state
fix/files--handle-empty-view-with-error
fix/files--list-header-button-title
fix/files-add-move-info
fix/files-duplicated-nodes
fix/files-page-title
fix/files-proper-loading-icon
fix/files-rename
fix/files-rename-esc
fix/files-rename-store
fix/files-renaming
fix/files-scroll-perf
fix/files/delete-display-no-trashbin
fix/files/preview-service-worker-registration
fix/files/reactivity-inject
fix/files_external/forbidden-exception
fix/files_external_scan
fix/files_sharing--global-search-in-select
fix/files_sharing/cleanup-error-messages
fix/files_sharing/disable-editing
fix/files_sharing/ocm-permissions
fix/filesreport-cast-fileId-to-int
fix/filter-for-components-explicitly
fix/fix-admin-audit-event-listening
fix/fix-copy-to-mountpoint-root
fix/fix-disabled-user-list-for-subadmins
fix/fix-email-share-transfer-accross-storages
fix/fix-int-casting
fix/fix-ldap-setupcheck-crash
fix/fix-server-tests
fix/fix-share-creation-error-messages
fix/fix-storage-interface-check
fix/flaky-cypress
fix/flaky-live-photos
fix/forbidden-files-insensitive
fix/forward-user-login-if-no-session
fix/get-managers-as-subadmin
fix/gracefully-parse-trusted-certificates
fix/handle-errors-in-migrate-key-format
fix/http/jsonresponse-data-type
fix/http/template-valid-status-codes
fix/imip-test-expects-integer
fix/install-dbport-unused
fix/installation-wording
fix/invalid-app-config
fix/invalid-copied-share-link
fix/invalid-mtime
fix/invitations-named-parameter
fix/issue-12387-delete-invitations
fix/issue-13862
fix/issue-3021-return-no-content-instead-of-error
fix/issue-34720
fix/issue-47879-property-serialization
fix/issue-48079-windows-time-zones
fix/issue-48528-disable-itip-and-imip-messages
fix/issue-48528-disable-itip-and-imip-messages-2
fix/issue-48732-exdate-rdate-property-instances
fix/issue-49756-translations
fix/issue-8458-imip-improvements-2
fix/istorage/return-types
fix/iurlgenerator/url-regex-markdown-parenthesis
fix/ldap-avoid-false-positive-mapping
fix/line-height-calc
fix/link-share-conflict-modal
fix/lock-session-during-cookie-renew
fix/log-login-flow-state-token-errors
fix/log-memcache-log-path-hash
fix/login-origin
fix/mailer-binaryfinder-fallback
fix/make-router-reactive
fix/migrate-encryption-away-from-hooks
fix/move-email-logic-local-user-backend
fix/move-storage-constructor-to-specific-interface
fix/multi-select
fix/nav-quota-new-design
fix/no-issue/enforced-props-checks
fix/no-issue/file-request-disable-when-no-public-upload
fix/no-issue/link-sharing-defaults
fix/no-issue/no-reshare-perms-4-email-shares
fix/no-issue/proper-share-sorting
fix/no-issue/show-file-drop-permissions-correctly
fix/no-issues/add-encryption-available-config
fix/noid/appconfig-setmixed-on-typed
fix/noid/clean-config-code
fix/noid/count-disabled-correct
fix/noid/debug-objectstorage-s3
fix/noid/deleted-circles-share
fix/noid/deprecation-correct-case
fix/noid/empty-path-for-files-versions
fix/noid/federation-really-surely-init-token
fix/noid/fix-try-login
fix/noid/get-fedid-from-cloudfed-provider
fix/noid/ignore-unavailable-token
fix/noid/init-navigation-data-too-soon
fix/noid/ldap-displayname-cached
fix/noid/ldap-n-counted-mapped-users
fix/noid/ldap-remnants-as-disabled-global
fix/noid/no-emails-for-user-shares
fix/noid/null-safe-metadata
fix/noid/path-hash-prep-statement
fix/noid/refresh-filesize-on-conflict-24
fix/noid/return-verified-email
fix/noid/run-kerberos-tests-on-ubuntu-latest
fix/noid/set-ext-pwd-as-sensitive
fix/noid/test-samba-with-self-hosted
fix/noid/textprocessing-list-types
fix/noid/textprocessing-schedule-taskprocessing-provider
fix/noid/try-latest-buildjet-cache
fix/noid/update-codeowners-nfebe
fix/note-icon-color
fix/null-label
fix/oc/inheritdoc
fix/ocm-host
fix/ocmdiscoveryservice/cache-errors
fix/openapi/array-syntax
fix/overide-itip-broker
fix/ownership-transfer-source-user-files
fix/password-field-sharing
fix/people-translation
fix/pick-folder-smart-picker
fix/pronouns-tests
fix/provisionApi-status-codes
fix/proxy-app-screenshot
fix/psalm/enabled-find-unused-baseline-entry
fix/psalm/throws-annotations
fix/psalm/update-baseline
fix/public-copy-move-stable-28
fix/public-get
fix/qbmapper/find-entities-return-type
fix/querybuilder/oracle-indentifier-length
fix/querybuilder/output-columns-aliases
fix/reasons-to-use
fix/recently_active_pgsql
fix/rector-use-statements
fix/refactor-user-access-to-file-list
fix/remove-needless-console-log
fix/remove-references-to-deprected-storage-interface
fix/remove-share-hint-exception-wrapping
fix/resiliant-user-removal
fix/resolve_public_rate_limit
fix/restore-sucess
fix/retry-delete-if-locked
fix/rtl-regession
fix/s3-verify-peer-setting
fix/s3configtrait/proxy-false
fix/sabre-dav-itip-broker
fix/sass
fix/session-cron
fix/session/log-likely-lost-session-conditions
fix/session/log-session-id
fix/session/log-session-start-error
fix/session/session-passphraze-handling
fix/session/transactional-remember-me-renewal
fix/settings--disable-discover-when-app-store-is-disabled
fix/settings-command
fix/settings/admin/ai/textprocessing
fix/settings/ex-apps-search
fix/settings/userid-dependency-injection
fix/share-notifications
fix/sharing-entry-link
fix/sharing-password-submit-create
fix/sharing-sidebar-tab-default
fix/shipped-app-version
fix/stable27
fix/stable28-uploader
fix/stable28/webcal-subscription-jobs-middleware
fix/stable29/numerical-userid-file-item-display
fix/stable29/webcal-subscription-jobs-middleware
fix/stable30/share-types-references
fix/storage-local/get-source-path-spl-file-info
fix/storage/get-directory-content-return-type
fix/storage/get-owner-false
fix/storage/method-docs-inheritance
fix/strict-types
fix/subadmin-user-groups
fix/tags/boolean-user-has-tags
fix/task-processing-api-controller/dont-use-plus
fix/taskprocessing-api-get-file-contents
fix/taskprocessing-better-errors
fix/taskprocessing-manager/php-notice
fix/texttotextchatwithtools-translator-notes
fix/themes-layout
fix/theming/default-theme-selection
fix/ticket_9672007/share_mail
fix/typo-recommended-apps
fix/undefined-response
fix/unified-search-ctrl-f
fix/unified-search-empty-sections
fix/update-share-entry-quick-select
fix/updatenotification-legacy-toast
fix/use-invokeprivate-for-test
fix/user_status/harden-api
fix/usertrait/backend-initialization
fix/view-in-folder-conditions
fix/view-only-preview
fix/view/catch-mkdir-exception-non-existent-parents
fix/weather_status/search-address-offline-errors
fix/webcal-subscription-jobs-middleware
fix/wrong-image-type
fixHeaderStyleSettings
fixKeyExFileExt
followup/39574/ocm-provider-without-beautiful-urls
followup/47329/add-all-types-to-handling
followup/48086/fix-more-activity-providers
forbid-moving-subfolder-24
fox/noid/extended-auth-on-webdav
fwdport/48445/master
getMountsForFileId-non-sparse
guzzleHandler
hasTableTaskprocessingTasks
ignore-write-test-unlink-err
instance-quota
issue_45523_actionmenu_in_multiple_actions_menu_bar
joblist-build-error-log
jr-quota-exceeded-admin-log
jr/enh/updates/options-buttons-web-ui
jr/meta/issue-template-bugs-closed-link
jtr-feat-setupchecks-limit-type
jtr-locale-personal-info
jtr-perf-checks-connectivity-https-proto
jtr-settings-memory-limit-details
jtr/chore-bug-report-logs
jtr/desc-and-help-plus-minor-fixes-files-scan
jtr/dns-noisy-dns-get-record
jtr/fix-25162
jtr/fix-40666-fallback-copy
jtr/fix-45671
jtr/fix-46609-delegation-add-group-overlap
jtr/fix-hash-hkdf-valueerror
jtr/fix-ipv6-zone-ids-link-local
jtr/fix-streamer-zip64
jtr/fix-tests/mysql-phpunit-health
jtr/fix-updater-cleanup-job-logging
jtr/fix-wipe-missing-token-handling
jtr/occ-maintenance-mode-desc
jtr/preview-thumb-robustness
jtr/router-light-refactoring
jtr/setup-checks-heading
jtr/test-binaryfinder
kerberos-saved-ticket
kerberos-saved-ticket-27
location-provider
lockThreadsOlderThan120d
log-event-recursion
login-less-custom-bundle
man/backport/45237/stable27
master
merge-token-updates
metadata-storage-id
mgallien/fix/retry_cache_operations_on_deadlock
mixedSetTTL
mount-move-checks
move-from-encryption-no-opt
moveStrictTyping
mysqlNativePassCi
new-julius
no-issue-use-correct-exceptions-in-share-class
noissue-refactor-share-class
normlize-less
notfound-debug-mounts
obj-delete-not-found
obj-delete-not-found-20
object-store-move-db
object-store-move-fixes
object-store-trash-move
oc-wnd-migrate
oc-wnd-migrate-25
occ-as-root
occ-upgrade-reminder
occ-upgrade-wording
oci-ci-faststart
ocs-user-info-quota-optimize
optionally-hide-hidden-files-in-public-share-access
oracle-share-reminder
passedLockValueIsIntOrNull
patch/61084/disable-clear-cache
patch/hash-return-null
patch/performance-scckit
path-available
perf/core/jobs-index
perf/files/chunked-upload-default-100-mib
perf/log-excessive-memory-consumption
perf/log-high-memory-requests
perf/noid/split-getSharedWith-query-into-more-performance-sets
printOccHumanFriendly
printOnlyOnceText
profile-request
pull_request-trigger
query-req-id-26
rakekniven-patch-1
rakekniven-patch-2
readd-object-store-phpunit
refactSmallAdjust
refactor/app/remove-register-routes
refactor/apps/constructor-property-promotion
refactor/apps/declare-strict-types
refactor/apps/php55-features
refactor/appstore-modernization
refactor/background-service
refactor/class-string-constant
refactor/dirname-to-dir
refactor/drop-to-uploader
refactor/elvis
refactor/files-cleanup
refactor/files-deprecated-share-types
refactor/files-filelist-width
refactor/files-required-navigation
refactor/move-to-new-activity-exception
refactor/provide-file-actions-through-composable
refactor/rector/extend-scope
refactor/register-routes
refactor/self-class-reference
refactor/settings/mail-settings-parameters
refactor/storage/constructors
refactor/storage/strong-param-types
refactor/storage/strong-type-properties
refactor/stream-encryption/typings
refactor/template-layout
refactor/void-tests
refactor/zip-event
release/28.0.11
release/28.0.11_rc1
release/28.0.12
release/28.0.12_rc1
release/28.0.12_rc2
release/28.0.14
release/28.0.14_rc1
release/29.0.0beta2
release/29.0.8
release/29.0.8_rc1
release/29.0.9
release/29.0.9_rc1
release/29.0.9_rc2
release/30.0.1_rc
release/30.0.1_rc1
release/30.0.1_rc2
release/30.0.2
release/30.0.2_rc1
release/30.0.2_rc2
release/30.0.4
release/30.0.4_rc1
remove-filecache-joins
remove-locking-config-sample
remove-non-accessible-shares
removeNoisyTextEmails
rename-deleted-default-calendar-in-trashbin
repair-mimetype-expensive-squashed-29
repair-tree-invalid-parent
reshare-permission-logic-27
revert-49004
revert-49650-backport/49293/stable30
revert-49825-revert-49650-backport/49293/stable30
revert/41453
revert/openapi-extractor
revoke-admin-overwrite-8
reworkShareExceptions
rfc/global-rate-limit
rfc/request-timeout
run-test-mime-type-icon-again
s3-bucket-create-exception
s3-disable-multipart
s3-disable-multipart-remove-debug
safety-net-null-check
scan-home-ext-storae
scanner-invalid-data-log
scckit-backports
seekable-http-size-24
sftp-fopen-write-stat-cache
sftp-known-mtime
sharding-code-fixes
sharding-existing
sharding-select-fixes
share-list-set-owner
share-mount-check-no-in
share-move-storage-error
share-reminder-sharding
share-root-meta-cache
skjnldbot/nextcloud-upload
smb-acl-fail-soft
smb-notify-test
smb-systembridge
stable-swift-v3
stable10
stable11
stable12
stable13
stable14
stable15
stable16
stable17
stable18
stable19
stable20
stable21
stable22
stable23
stable24
stable25
stable26
stable27
stable28
stable28BackportMissingSetTTL
stable29
stable30
stable9
storage-cache-not-exists
storage-debug-info
storage-id-cache-memcache
stream-assembly-stream-size
techdebt/noid/add-parameter-typehints
techdebt/noid/more-useful-debug-logs
test-scanner-no-transactions-26
test/eol-check
test/eol-check-26
test/fix-cypress
test/folder-tree
test/integration/cleanup-logs
tests/fix-jest-leftover
tests/template-workflow
transfer-share-skip-notfound
try-non-recursive-source-27
update-phpdoc-for-folder-get
update-stale-bot-configuration
updater-change-mimetype-objectstore
useHttpFramework
useOCPClassesTrashbin
usermountcache-filecache-joins
validateProvidedEmail
wrapper-instanceof-resiliant-squash
Nextcloud server, a safe home for all your data: https://github.com/nextcloud/server www-data
blob: 79e2e33d994e5a63ff80bfdc0857891b92daed65 (
plain )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
OC . L10N . register (
"files_sharing" ,
{
"Server to server sharing is not enabled on this server" : "Na tem strežniku ni omogočena možnost souporabe strežnika s strežnikom." ,
"The mountpoint name contains invalid characters." : "Ime točke priklopa vsebuje neveljavne znake." ,
"Not allowed to create a federated share with the same user server" : "Ni dovoljeno ustvariti souporabe zveznega oblaka z istim uporabnikom" ,
"Invalid or untrusted SSL certificate" : "Neveljavno oziroma nepotrjeno potrdilo SSL" ,
"Could not authenticate to remote share, password might be wrong" : "Ni mogoče overiti istovetnosti oddaljene mape za souporabo. Najverjetneje je uporabljeno napačno geslo." ,
"Storage not valid" : "Shramba ni veljavna" ,
"Couldn't add remote share" : "Ni mogoče dodati oddaljenega mesta za souporabo" ,
"Shared with you" : "V souporabi z vami" ,
"Shared with others" : "V souporabi z drugimi" ,
"Shared by link" : "V souporabi prek povezave" ,
"Nothing shared with you yet" : "Datotek drugih uporabnikov še ni v souporabi" ,
"Files and folders others share with you will show up here" : "Datoteke in mape, katerih souporabo z vami omogočijo drugi, bodo zbrane na tem mestu." ,
"Nothing shared yet" : "Souporabe datotek še niste omogočili" ,
"Files and folders you share will show up here" : "Datoteke in mape, ki ste jih označili za souporabo z drugimi, bodo zbrane na tem mestu." ,
"No shared links" : "Ni povezav za souporabo" ,
"Files and folders you share by link will show up here" : "Datoteke in mape, ki ste jih označili za souporabo prek povezave, bodo zbrane na tem mestu." ,
"Do you want to add the remote share {name} from {owner}@{remote}?" : "Ali želite dodati oddaljeno mesto souporabe {name} na {owner}@{remote}?" ,
"Remote share" : "Oddaljeno mesto za souporabo" ,
"Remote share password" : "Geslo za mesto za oddaljeno souporabo" ,
"Cancel" : "Prekliči" ,
"Add remote share" : "Dodaj oddaljeno mesto za souporabo" ,
"You can upload into this folder" : "V to mapo je dovoljeno poslati datoteke" ,
"No ownCloud installation (7 or higher) found at {remote}" : "Na mestu {remote} ni nameščenega okolja ownCloud (različice 7 ali višje)" ,
"Invalid ownCloud url" : "Naveden je neveljaven naslov URL strežnika ownCloud" ,
"Shared by" : "V souporabi z" ,
"Sharing" : "Souporaba" ,
"Share API is disabled" : "API za souporabo je izključen" ,
"Wrong share ID, share doesn't exist" : "Napačen ID mesta uporabe; mesto ne obstaja!" ,
"Could not delete share" : "Tega predmeta v souporabi ni mogoče izbrisati." ,
"Please specify a file or folder path" : "Določiti je treba datoteko ali pot do mape" ,
"Wrong path, file/folder doesn't exist" : "Napačna pot; datoteka ali mapa ne obstaja" ,
"Please specify a valid user" : "Navesti je treba veljavnega uporabnika." ,
"Group sharing is disabled by the administrator" : "Skupinska souporaba je skrbniško onemogočena" ,
"Please specify a valid group" : "Navesti je treba veljavno skupino" ,
"Public link sharing is disabled by the administrator" : "Souporaba prek javne povezave je skrbniško onemogočena" ,
"Public upload disabled by the administrator" : "Javno pošiljanje v oblak je skrbniško onemogočeno" ,
"Public upload is only possible for publicly shared folders" : "Javno pošiljanje v oblak je mogoče le za javne mape v skupni rabi." ,
"Invalid date, date format must be YYYY-MM-DD" : "Neveljaven zapis časa; biti mora v zapisu YYYY-MM-DD" ,
"Sharing %s failed because the back end does not allow shares from type %s" : "Deljenje %s ni uspelo ker sistem ne dovoli souporabe za tip %s" ,
"Unknown share type" : "Neznana vrsta mesta souporabe" ,
"Not a directory" : "Predmet ni mapa" ,
"Could not lock path" : "Poti ni mogoče zakleniti" ,
"Can't change permissions for public share links" : "Za javne povezave souporabe, spreminjanje dovoljenj ni mogoče." ,
"Wrong or no update parameter given" : "Parameter posodobitve ni podan ali pa je navedena napačna vrednost" ,
"Cannot increase permissions" : "Ni mogoče povišati dovoljenj" ,
"A file or folder has been <strong>shared</strong>" : "Za datoteko ali mapo je omogočena <strong>souporaba</strong>." ,
"A file or folder was shared from <strong>another server</strong>" : "Souporaba datoteke ali mape <strong>z drugega strežnika</strong> je omogočena." ,
"A public shared file or folder was <strong>downloaded</strong>" : "Mapa ali datoteka v souporabi je bila <strong>prejeta</strong>." ,
"You received a new remote share %2$s from %1$s" : "Uporabnik %1$s vam je omogočil souporabo mape %2$s" ,
"You received a new remote share from %s" : "Prejeli ste mapo za oddaljeno souporabo z %s" ,
"%1$s accepted remote share %2$s" : "Uporabnik %1$s je prejel oddaljeno souporabo %2$s" ,
"%1$s declined remote share %2$s" : "Uporabnik %1$s je zavrnil souporabo %2$s" ,
"%1$s unshared %2$s from you" : "Uporabnik %1$s je onemogoči souporabo %2$s z vami" ,
"Public shared folder %1$s was downloaded" : "Mapa v souporabi %1$s je bila prejeta." ,
"Public shared file %1$s was downloaded" : "Datoteka v souporabi %1$s je bila prejeta" ,
"You shared %1$s with %2$s" : "Omogočili ste souporabo %1$s z uporabnikom %2$s" ,
"%2$s shared %1$s with %3$s" : "Uporabnik %2$s je omogočil souporabo %1$s z %3$s" ,
"You removed the share of %2$s for %1$s" : "Odstranili ste mapo v souporabi %2$s za %1$s" ,
"%2$s removed the share of %3$s for %1$s" : "%2$s umaknil souporabo %3$s za %1$s" ,
"You shared %1$s with group %2$s" : "Omogočili ste souporabo %1$s s skupino %2$s" ,
"%2$s shared %1$s with group %3$s" : "%2$s deli %1$s s skupino %3$s" ,
"You removed the share of group %2$s for %1$s" : "Ukinili ste deljenje s skupino %2$s za %1$s" ,
"%2$s removed the share of group %3$s for %1$s" : "%2$s ukinil deljenje s skupino %3$s za %1$s" ,
"%2$s shared %1$s via link" : "%2$s deli %1$s preko povezave" ,
"You shared %1$s via link" : "Omogočili ste souporabo %1$s preko povezave" ,
"You removed the public link for %1$s" : "Umaknili ste javno povezavo za %1$s" ,
"%2$s removed the public link for %1$s" : "%2$s umaknil javno povezavo za %1$s" ,
"Your public link for %1$s expired" : "Javna povezava za %1$s je časovno potekla!" ,
"The public link of %2$s for %1$s expired" : "Javna povezava %2$s za %1$s je potekla" ,
"%2$s shared %1$s with you" : "Uporabnik %2$s je omogočil souporabo %1$s" ,
"%2$s removed the share for %1$s" : "%2$s je umaknil deljenje za %1$s" ,
"Downloaded via public link" : "Prejeto preko javne povezave" ,
"Shared with %2$s" : "V souporabi z %2$s" ,
"Shared with %3$s by %2$s" : "Souporaba z %3$s in %2$s" ,
"Removed share for %2$s" : "Odstranitev souporabe za %2$s" ,
"%2$s removed share for %3$s" : "%2$s je odstranil souporabo za %3$s" ,
"Shared with group %2$s" : "V souporabi s skupino %2$s" ,
"Shared with group %3$s by %2$s" : "V souporabi s skupino %3$s in %2$s" ,
"Removed share of group %2$s" : "Odstranitev souporabe s skupino %2$s" ,
"%2$s removed share of group %3$s" : "%2$s je odstranil povezavo za skupino %3$s" ,
"Shared via link by %2$s" : "%2$s je omogočil souporabo prek povezave" ,
"Shared via public link" : "V souporabi prek javne povezave" ,
"Removed public link" : "Javno povezava je odstranjena" ,
"%2$s removed public link" : "%2$s je odstranil javno povezavo" ,
"Public link expired" : "Javna povezava je potekla" ,
"Public link of %2$s expired" : "Javna povezava %2$s je potekla" ,
"Shared by %2$s" : "Souporabo je omogočil uporabnik %2$s" ,
"Shares" : "Souporaba" ,
"This share is password-protected" : "To mesto je zaščiteno z geslom." ,
"The password is wrong. Try again." : "Geslo je napačno. Poskusite znova." ,
"Password" : "Geslo" ,
"No entries found in this folder" : "V tej mapi ni najdenih predmetov." ,
"Name" : "Ime" ,
"Share time" : "Čas souporabe" ,
"Sorry, this link doesn’t seem to work anymore." : "Povezava očitno ni več v uporabi." ,
"Reasons might be:" : "Vzrok je lahko:" ,
"the item was removed" : "predmet je odstranjen," ,
"the link expired" : "povezava je pretekla," ,
"sharing is disabled" : "souporaba je onemogočena." ,
"For more info, please ask the person who sent this link." : "Za več podrobnosti stopite v stik s pošiljateljem te povezave." ,
"Add to your ownCloud" : "Dodaj v svoj oblak ownCloud" ,
"Download" : "Prejmi" ,
"Download %s" : "Prejmi %s" ,
"Direct link" : "Neposredna povezava" ,
"Upload files to %s" : "Naloži datoteke v %s" ,
"Select or drop files" : "Izberi ali povleci datoteke" ,
"Uploading files…" : "Nalaganje datotek..." ,
"Uploaded files:" : "Naložene datoteke:"
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);" );