gitea源码

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. // Copyright 2025 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package repo
  4. import (
  5. "net/http"
  6. "code.gitea.io/gitea/services/context"
  7. files_service "code.gitea.io/gitea/services/repository/files"
  8. )
  9. func DiffPreviewPost(ctx *context.Context) {
  10. content := ctx.FormString("content")
  11. treePath := files_service.CleanGitTreePath(ctx.Repo.TreePath)
  12. if treePath == "" {
  13. ctx.HTTPError(http.StatusBadRequest, "file name to diff is invalid")
  14. return
  15. }
  16. entry, err := ctx.Repo.Commit.GetTreeEntryByPath(treePath)
  17. if err != nil {
  18. ctx.ServerError("GetTreeEntryByPath", err)
  19. return
  20. } else if entry.IsDir() {
  21. ctx.HTTPError(http.StatusUnprocessableEntity)
  22. return
  23. }
  24. diff, err := files_service.GetDiffPreview(ctx, ctx.Repo.Repository, ctx.Repo.BranchName, treePath, content)
  25. if err != nil {
  26. ctx.ServerError("GetDiffPreview", err)
  27. return
  28. }
  29. if len(diff.Files) != 0 {
  30. ctx.Data["File"] = diff.Files[0]
  31. }
  32. ctx.HTML(http.StatusOK, tplEditDiffPreview)
  33. }