Don't manually replace whitespace during render

For historical reasons Gitea manually alters the urlPrefix and replaces
a whitespace with a +. This Works for URLs, but we're also passing
urlPrefix to git calls and adding the + is breaking the tree path.

Goldmark will automatically convert a white space to the proper %20, so
we should leave the string as is which lets us pass it to git unmodified
and then let Goldmark fix it.

Also fixed separate bug in URLJoin I noticed while testing where it will
silently discard sections of a path that have # in them (possibly
others). We should just escape it first.

Fixes 10156
This commit is contained in:
j. mccann
2020-02-16 01:02:56 -05:00
parent 15614a8368
commit 55cd4a6248
3 changed files with 3 additions and 2 deletions

View File

@ -25,6 +25,9 @@ func PathEscapeSegments(path string) string {
// URLJoin joins url components, like path.Join, but preserving contents
func URLJoin(base string, elems ...string) string {
// We do need to escape special chars here or else they can be silently discarded
// in the ResolveReference call below
base = PathEscapeSegments(base)
if !strings.HasSuffix(base, "/") {
base += "/"
}