Ensure executable bit is kept on the web editor (#10607) (#10614)

Co-authored-by: Antoine GIRARD <sapk@users.noreply.github.com>

Co-authored-by: Antoine GIRARD <sapk@users.noreply.github.com>
This commit is contained in:
Lunny Xiao 2020-03-05 16:55:21 +08:00 committed by GitHub
parent c9e4d7a564
commit fd85d31cb4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -210,6 +210,7 @@ func CreateOrUpdateRepoFile(repo *models.Repository, doer *models.User, opts *Up
encoding := "UTF-8" encoding := "UTF-8"
bom := false bom := false
executable := false
if !opts.IsNewFile { if !opts.IsNewFile {
fromEntry, err := commit.GetTreeEntryByPath(fromTreePath) fromEntry, err := commit.GetTreeEntryByPath(fromTreePath)
@ -245,6 +246,7 @@ func CreateOrUpdateRepoFile(repo *models.Repository, doer *models.User, opts *Up
return nil, models.ErrSHAOrCommitIDNotProvided{} return nil, models.ErrSHAOrCommitIDNotProvided{}
} }
encoding, bom = detectEncodingAndBOM(fromEntry, repo) encoding, bom = detectEncodingAndBOM(fromEntry, repo)
executable = fromEntry.IsExecutable()
} }
// For the path where this file will be created/updated, we need to make // For the path where this file will be created/updated, we need to make
@ -368,9 +370,15 @@ func CreateOrUpdateRepoFile(repo *models.Repository, doer *models.User, opts *Up
} }
// Add the object to the index // Add the object to the index
if executable {
if err := t.AddObjectToIndex("100755", objectHash, treePath); err != nil {
return nil, err
}
} else {
if err := t.AddObjectToIndex("100644", objectHash, treePath); err != nil { if err := t.AddObjectToIndex("100644", objectHash, treePath); err != nil {
return nil, err return nil, err
} }
}
// Now write the tree // Now write the tree
treeHash, err := t.WriteTree() treeHash, err := t.WriteTree()