Skip to content

Comments

Add ability to download subpath archive#36371

Merged
wxiaoguang merged 19 commits intogo-gitea:mainfrom
TheFox0x7:download-subfolder
Jan 16, 2026
Merged

Add ability to download subpath archive#36371
wxiaoguang merged 19 commits intogo-gitea:mainfrom
TheFox0x7:download-subfolder

Conversation

@TheFox0x7
Copy link
Contributor

@TheFox0x7 TheFox0x7 commented Jan 14, 2026

closes: #4478

screenshot:

image

@GiteaBot GiteaBot added the lgtm/need 2 This PR needs two approvals by maintainers to be considered for merging. label Jan 14, 2026
@TheFox0x7
Copy link
Contributor Author

@ChristopherHX Is there a way to turn streaming off on an instance? It's not documented by design but I don't see a way to switch it off at all.

@silverwind silverwind added the type/feature Completely new functionality. Can only be merged if feature freeze is not active. label Jan 14, 2026
@github-actions github-actions bot added modifies/api This PR adds API routes or modifies them modifies/go Pull requests that update Go code modifies/templates This PR modifies the template files labels Jan 14, 2026
@ChristopherHX
Copy link
Contributor

@ChristopherHX Is there a way to turn streaming off on an instance? It's not documented by design but I don't see a way to switch it off at all.

I believe the past discussion was about to only expose a documented switch if someone has a problem with streaming, but AFAIK this has not happened yet so only internal toggle.

(Earlier drafts of my change did most likely have a public config in gitea.ini)

@TheFox0x7
Copy link
Contributor Author

I'll need to look into it to be sure but paths with bundle will have to exclude each other, so bundle under a path won't probably be an option.
Also added two TODO's, one for undocumented route, other for swagger docs. Ideas on how to address them are welcome

@wxiaoguang wxiaoguang added this to the 1.26.0 milestone Jan 15, 2026
@GiteaBot GiteaBot added lgtm/need 1 This PR needs approval from one additional maintainer to be merged. and removed lgtm/need 2 This PR needs two approvals by maintainers to be considered for merging. labels Jan 15, 2026
@wxiaoguang
Copy link
Contributor

wxiaoguang commented Jan 15, 2026

Made a not-quite-related commit e153f9f "fix incorrect imports" and deny the "github.com/pkg/errors" package. It bothers me a lot and this time it was also incorrectly imported again when writing tests, so I decided to totally deny it by the way. Feel free to revert it if you don't like putting it in this PR.

@TheFox0x7
Copy link
Contributor Author

I'm all for the deny rule, I really don't get why IDE's tend to add it instead of std lib one. I've looked through the changes you made and found nothing of concern - good idea with not supporting caching on path download, I didn't think about it much but it makes sense not to cache that at all.

@TheFox0x7 TheFox0x7 marked this pull request as ready for review January 15, 2026 09:33
@lunny
Copy link
Member

lunny commented Jan 15, 2026

It's better the menu texts are Download Directory(zip) and Download Directory(tar)

@TheFox0x7
Copy link
Contributor Author

Hm. Now that you mention it, it would be better to take gitlab's route here:
image
That way adding more formats in the future would be easier and we won't have to have translation per format. I'll look into adding something that doesn't look like this (which I have now):
image
which should be a nice intro to gitea's frontend which I've been avoiding :)
Unless someone has other suggestions/ideas?

@lunny
Copy link
Member

lunny commented Jan 16, 2026

Hm. Now that you mention it, it would be better to take gitlab's route here: image That way adding more formats in the future would be easier and we won't have to have translation per format. I'll look into adding something that doesn't look like this (which I have now): image which should be a nice intro to gitea's frontend which I've been avoiding :) Unless someone has other suggestions/ideas?

The emphasis here is to use Download Directory instead of Download.

if errors.As(err, &gitErr); strings.HasPrefix(gitErr.Stderr(), "fatal: pathspec") {
// we can't use RunStdError as ConcatenateError doesn't return it.
// TODO: Investigate removing WithStdError completely and always returning RunStdError from failed git calls.
if strings.Contains(err.Error(), "fatal: pathspec") {
Copy link
Contributor

@wxiaoguang wxiaoguang Jan 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if ok := errors.As(err, &gitErr); ok && strings.HasPrefix(gitErr.Stderr(), "fatal: pathspec") {

It should be like this.

Hmm, indeed, it doesn't return RunStdError, will take a look

Copy link
Contributor

@wxiaoguang wxiaoguang Jan 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will fix


Done in new commits

@wxiaoguang
Copy link
Contributor

wxiaoguang commented Jan 16, 2026

Hm. Now that you mention it, it would be better to take gitlab's route here:
which should be a nice intro to gitea's frontend ...

The current "dropdown menu" layout doesn't support that "nice" layout because the content is item-based. The best I can do now is like this:

Screenshot:

Details image

(force pushed to fix space problems)


By the way, I don't think we need "adding more formats in the future" because only zip and tar.gz are widely used at the moment and they are good enough 🤣

@GiteaBot GiteaBot added lgtm/done This PR has enough approvals to get merged. There are no important open reservations anymore. and removed lgtm/need 1 This PR needs approval from one additional maintainer to be merged. labels Jan 16, 2026
Signed-off-by: wxiaoguang <wxiaoguang@gmail.com>
@wxiaoguang wxiaoguang enabled auto-merge (squash) January 16, 2026 09:03
@wxiaoguang wxiaoguang merged commit 69c5921 into go-gitea:main Jan 16, 2026
24 checks passed
@wxiaoguang
Copy link
Contributor

wxiaoguang commented Jan 18, 2026

Fix the git error handling FIXME

-> Refactor git command stderr handling #36402

zjjhot added a commit to zjjhot/gitea that referenced this pull request Jan 21, 2026
* giteaofficial/main: (27 commits)
  Allow foreachref parse max tokens from 4*64KB to 4MB (go-gitea#36414)
  Refactor git command context & pipeline (go-gitea#36406)
  Fix missing repository id when migrating release attachments (go-gitea#36389)
  [skip ci] Updated translations via Crowdin
  Refactor git command stderr handling (go-gitea#36402)
  Some refactors about GetMergeBase (go-gitea#36186)
  Refactor git command stdio pipe (go-gitea#36393)
  fix: typos in comments (go-gitea#36394)
  add support for archive-upload rpc (go-gitea#36391)
  Hide delete directory button for mirror or archive repository and disable the menu item if user have no permission (go-gitea#36384)
  Fix CODEOWNERS review request attribution using comment metadata (go-gitea#36348)
  Update JS and PY deps (go-gitea#36383)
  Add ability to download subpath archive (go-gitea#36371)
  Fix bug on notification read (go-gitea#36339)
  Add chunked transfer encoding support for LFS uploads (go-gitea#36380)
  Migrate to `import.meta.env` and clean up types and eslint (go-gitea#36362)
  Rename CSS variables and improve colorblind themes (go-gitea#36353)
  Indicate when only optional checks failed (go-gitea#36367)
  Release attachments must belong to the intended repo (go-gitea#36347)
  Fix permission check on org project operations (go-gitea#36318)
  ...
ZPascal added a commit to ZPascal/gitea that referenced this pull request Jan 22, 2026
# This is the 1st commit message:

feat: Add max-parallel implementation inside the Gitea server

# This is the commit message go-gitea#2:

fix: Remove MatrixID and Capacity functionality

# This is the commit message go-gitea#3:

Fix incorrect text content detection (go-gitea#36364)

Fix go-gitea#36325
# This is the commit message go-gitea#4:

clean watches when make a repository private and check permission when send release emails (go-gitea#36319)

# This is the commit message go-gitea#5:

Fix bug when compare in the pull request (go-gitea#36363)

The pull request comparison should not use `direct compare`.
# This is the commit message go-gitea#6:

Fix permission check on org project operations (go-gitea#36318)

# This is the commit message go-gitea#7:

Release attachments must belong to the intended repo (go-gitea#36347)

# This is the commit message go-gitea#8:

Indicate when only optional checks failed (go-gitea#36367)

Currently it's not clear that you can merge a PR when only optional
checks failed:

<img width="922" height="447" alt="Screenshot 2026-01-14 at 4 08 17 pm"
src="https://github.com/user-attachments/assets/e11670c7-5ab9-42d7-af09-2d8a8fd532d3"
/>

This PR changes the text to say "Some optional checks failed" when only
optional checks failed:

<img width="922" height="443" alt="Screenshot 2026-01-14 at 3 59 08 pm"
src="https://github.com/user-attachments/assets/9ea69b13-38d6-4cfc-b4f7-952eff58e546"
/>

When a required check fails it'll still say "Some checks failed":

<img width="928" height="343" alt="Screenshot 2026-01-14 at 3 59 20 pm"
src="https://github.com/user-attachments/assets/d3764a95-9737-4482-851e-d3406b1e4d76"
/>

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
# This is the commit message go-gitea#9:

Rename CSS variables and improve colorblind themes (go-gitea#36353)

Followup go-gitea#36215, rename the
variables for consistency with existing vars and change green to value
of `--color-blue` in the relevant color blind themes:

<img width="1305" height="303" alt="image"
src="https://github.com/user-attachments/assets/3d131ab7-99ab-4b03-93ab-715ce0030b08"
/>

The blue coloring also matched GitHub:

<img width="1313" height="393" alt="image"
src="https://github.com/user-attachments/assets/f97e35b2-4ff4-49b0-841f-ffd49a02e03d"
/>

---------

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
# This is the commit message go-gitea#10:

Migrate to `import.meta.env` and clean up types and eslint (go-gitea#36362)

`import.meta.env` is supported in both vitest and webpack [as of
recent](webpack/webpack#19996), so replace all
previous use of `process.env` with it. Current usage is limited to test
files, I've also verified it works in actual frontend code.

`webpack/module` is added to typescript types which includes the
definition for `import.meta.env`. I've also made the eslint globals more
precise. Finally, `__webpack_public_path__` is removed from our type
definitions because `webpack/module` also provides it.
# This is the commit message go-gitea#11:

Add chunked transfer encoding support for LFS uploads (go-gitea#36380)

Enable chunked transfer encoding for Git LFS uploads by adding
Transfer-Encoding: chunked header to upload action responses. This
prevents large file uploads (100+ MB) from being blocked by reverse
proxies like Cloudflare that buffer non-chunked requests.

Fix go-gitea#22233

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
# This is the commit message go-gitea#12:

Fix bug on notification read (go-gitea#36339)

When a user has been revoked permission to access a repository, the
related notification could still be visited. But the repository's
information should not be leaked any more.
# This is the commit message go-gitea#13:

Add ability to download subpath archive (go-gitea#36371)

closes: go-gitea#4478

---------

Signed-off-by: wxiaoguang <wxiaoguang@gmail.com>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
# This is the commit message go-gitea#14:

Update JS and PY deps (go-gitea#36383)

- Update JS and PY dependencies
- Workaround stylelint/stylelint#8893 by
moving the stylint config file to JS
- Regenerate SVGs
- Bump to python 3.14 in devcontainer and actions
- Verified `@github/text-expander-element`
- Removed obsolete type stub
# This is the commit message go-gitea#15:

Fix CODEOWNERS review request attribution using comment metadata (go-gitea#36348)

Fixes go-gitea#36333

## Problem

When CODEOWNERS automatically assigns reviewers to a pull request, the
timeline incorrectly shows the PR author as the one who requested the
review (e.g., "PR_AUTHOR requested review from CODE_OWNER"). This is
misleading since the action was triggered automatically by CODEOWNERS
rules, not by the PR author.

## Solution

Store CODEOWNERS attribution in comment metadata instead of changing the
doer user:
- Add `SpecialDoerName` field to `CommentMetaData` struct (value:
`"CODEOWNERS"` for CODEOWNERS-triggered requests)
- Pass `isCodeOwners=true` to `AddReviewRequest` and
`AddTeamReviewRequest` functions
- Template can check this metadata to show appropriate attribution
message

---------

Signed-off-by: wxiaoguang <wxiaoguang@gmail.com>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
# This is the commit message go-gitea#16:

Hide delete directory button for mirror or archive repository and disable the menu item if user have no permission (go-gitea#36384)

# This is the commit message go-gitea#17:

add support for archive-upload rpc (go-gitea#36391)

Add support for fetching archives with `git archive --remote <repo-url>`

closes: go-gitea#23425

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>

# This is the commit message go-gitea#18:

fix: typos in comments (go-gitea#36394)

# This is the commit message go-gitea#19:

Refactor git command stdio pipe (go-gitea#36393)

And remove the incorrect `ensureValidGitRepository`
# This is the commit message go-gitea#20:

Some refactors about GetMergeBase (go-gitea#36186)

Maybe fix go-gitea#32018

- Use `gitrepo.GetMergeBase` method instead of other two
implementations.
- Add `FetchRemoteCommit` so that we don't need to add many `remote` to
the git repository to avoid possible git lock conflicts. A lock will
start when invoke the function, it will be invoked when cross-repository
comparing. The head repository will fetch the base repository's base
commit id. In most situations, it should lock the fork repositories so
that it should not become a bottleneck.
- Improve `GetCompareInfo` to remove unnecessarily adding remote.
- Remove unnecessary parameters of `SignMerge`.
# This is the commit message go-gitea#21:

Refactor git command stderr handling (go-gitea#36402)

And clean up legacy fragile & incorrect logic
# This is the commit message go-gitea#22:

[skip ci] Updated translations via Crowdin

# This is the commit message go-gitea#23:

Fix missing repository id when migrating release attachments (go-gitea#36389)

This PR fixes missed repo_id on the migration of attachments to Gitea.
It also provides a doctor check to fix the dirty data on the database.

Refactor git command context & pipeline (go-gitea#36406)

Less and simpler code, fewer bugs

Allow foreachref parse max tokens from 4*64KB to 4MB (go-gitea#36414)

Fix go-gitea#36408

---------

Signed-off-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: Lauris BH <lauris@nix.lv>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>

Update material-icon-theme to v5.31.0 (go-gitea#36427)

Update chroma to v2.23.0 (go-gitea#36423)

Fix markdown newline handling during IME composition (go-gitea#36421)

### Summary

Fix incorrect newline handling in markdown editor when using IME input.

### Details

While composing text with an IME, pressing Enter should not trigger
markdown indentation logic.
This change skips indentation handling during composition by checking
`e.isComposing`.

This prevents unexpected line breaks and formatting issues for CJK
users.

[skip ci] Updated translations via Crowdin

Fix typos: unknow -> unknown, pktLineTypeUnknow -> pktLineTypeUnknown (go-gitea#36419)

Fix issue filter menu layout (go-gitea#36426)

Fix go-gitea#36420

Fix spelling (go-gitea#36399)

Signed-off-by: Thomas Beutlich <115483027+thbeu@users.noreply.github.com>

Refactor git command stdio pipe (go-gitea#36422)

Most potential deadlock problems should have been fixed, and new code is
unlikely to cause new problems with the new design.

Also raise the minimum Git version required to 2.6.0 (released in 2015)

Remove `node-check` and `go-check`, support node prerelease versions (go-gitea#36382)

1. Remove those checks for the sake of build performance and because go
and node will fail anyways if their versions are incorrect.
3. Support pre-release Node version for determining NODE_VARS.
2. Update to the chinese READMEs to mention `pnpm` which is already
present in english README.

---------

Co-authored-by: techknowlogick <techknowlogick@gitea.com>
Co-authored-by: Giteabot <teabot@gitea.io>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>

fix: Adjust the unittests

fix: Lint issues

fix: Adjust the swagger config
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lgtm/done This PR has enough approvals to get merged. There are no important open reservations anymore. modifies/api This PR adds API routes or modifies them modifies/dependencies modifies/go Pull requests that update Go code modifies/internal modifies/templates This PR modifies the template files topic/code-linting type/feature Completely new functionality. Can only be merged if feature freeze is not active.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Question for downloading sub-items of a git repository

7 participants