2022-09-03 23:22:19 +05:30
---
date: " 2022-09-01T20:50:42+0000"
2024-09-06 19:46:32 +00:00
slug: "agit"
2023-07-25 23:53:13 -05:00
sidebar_position: 12
Refactor docs (#23752)
This was intended to be a small followup for
https://github.com/go-gitea/gitea/pull/23712, but...here we are.
1. Our docs currently use `slug` as the entire URL, which makes
refactoring tricky (see https://github.com/go-gitea/gitea/pull/23712).
Instead, this PR attempts to make future refactoring easier by using
slugs as an extension of the section. (Hugo terminology)
- What the above boils down to is this PR attempts to use directory
organization as URL management. e.g. `usage/comparison.en-us.md` ->
`en-us/usage/comparison/`, `usage/packages/overview.en-us.md` ->
`en-us/usage/packages/overview/`
- Technically we could even remove `slug`, as Hugo defaults to using
filename, however at least with this PR it means `slug` only needs to be
the name for the **current file** rather than an entire URL
2. This PR adds appropriate aliases (redirects) for pages, so anything
on the internet that links to our docs should hopefully not break.
3. A minor nit I've had for a while, renaming `seek-help` to `support`.
It's a minor thing, but `seek-help` has a strange connotation to it.
4. The commits are split such that you can review the first which is the
"actual" change, and the second is added redirects so that the first
doesn't break links elsewhere.
---------
Signed-off-by: jolheiser <john.olheiser@gmail.com>
2023-04-27 22:33:41 -05:00
aliases:
- /en-us/agit-setup
2022-09-03 23:22:19 +05:30
---
2024-09-06 19:46:32 +00:00
# AGit
2022-09-03 23:22:19 +05:30
2024-09-06 19:46:32 +00:00
In Gitea `1.13` , support for [agit ](https://git-repo.info/en/2020/03/agit-flow-and-git-repo/ ) was added. AGit enables users to create pull requests directly, even without write permissions of the repository, eliminating the need to fork it. This helps reduce the number of duplicated repositories and minimizes unnecessary disk usage.
2022-09-03 23:22:19 +05:30
2024-09-06 19:46:32 +00:00
:::note
Git version 2.29 or higher is required on the server side for this to work.
:::
2022-09-03 23:22:19 +05:30
2024-09-06 19:46:32 +00:00
## Creating PRs with AGit
AGit allows to create PRs while pushing code to the remote repo.
2023-08-05 20:48:46 +08:00
This can be done by pushing to the branch followed by a specific refspec (a location identifier known to git).
2022-09-03 23:22:19 +05:30
The following example illustrates this:
```shell
2023-10-14 21:50:23 +08:00
git push origin HEAD:refs/for/main
2022-09-03 23:22:19 +05:30
```
The command has the following structure:
- `HEAD` : The target branch
2023-10-17 11:53:36 +02:00
- `origin` : The target repository (not a fork!)
- `HEAD` : The local branch containing the changes you are proposing
- `refs/<for|draft|for-review>/<branch>` : The target PR type and configuration
2022-09-03 23:22:19 +05:30
- `for` : Create a normal PR with `<branch>` as the target branch
2023-10-17 11:53:36 +02:00
- `draft` /`for-review` : Currently ignored silently
- `<branch>/` : The branch you want your changes to be merged into
2022-09-03 23:22:19 +05:30
- `-o <topic|title|description>` : Options for the PR
2023-10-17 11:53:36 +02:00
- `topic` : The topic of this change. It will become the name of the branch holding the changes waiting for review. This is REQUIRED to trigger a pull request.
- `title` : The PR title (optional but recommended), only used for topics not already having an associated PR.
- `description` : The PR description (optional but recommended), only used for topics not already having an associated PR.
2024-10-11 00:06:36 -07:00
- `force-push=true` : Specifies whether to force-update the target branch.
- Note: omitting the value and using just `-o force-push` will not work.
2022-09-03 23:22:19 +05:30
2023-10-14 21:50:23 +08:00
Here's another advanced example for creating a new PR targeting `main` with `topic` , `title` , and `description` :
2022-09-03 23:22:19 +05:30
```shell
2023-10-14 21:50:23 +08:00
git push origin HEAD:refs/for/main -o topic="Topic of my PR" -o title="Title of the PR" -o description="# The PR Description\nThis can be **any** markdown content.\n- [x] Ok"
2022-09-03 23:22:19 +05:30
```