// 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 repofiles import ( "strings" "code.gitea.io/gitea/models" "code.gitea.io/gitea/services/gitdiff" ) // GetDiffPreview produces and returns diff result of a file which is not yet committed. func GetDiffPreview(repo *models.Repository, branch, treePath, content string) (*gitdiff.Diff, error) { if branch == "" { branch = repo.DefaultBranch } t, err := NewTemporaryUploadRepository(repo) if err != nil { return nil, err } defer t.Close() if err := t.Clone(branch); err != nil { return nil, err } if err := t.SetDefaultIndex(); err != nil { return nil, err } // Add the object to the database objectHash, err := t.HashObject(strings.NewReader(content)) if err != nil { return nil, err } // Add the object to the index if err := t.AddObjectToIndex("100644", objectHash, treePath); err != nil { return nil, err } return t.DiffIndex() }