-
Notifications
You must be signed in to change notification settings - Fork 84
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #145 from phracek/downstream2upstream
Sync files from downstream into upstream
- Loading branch information
Showing
15 changed files
with
452 additions
and
48 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
*.py[co] | ||
bigger-secret | ||
biggest-secret | ||
.tox |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
# `packit sync-from-downstream` | ||
|
||
This is a detailed documentation for the downstream sync functionality of packit. The | ||
command creates a new pull request in upstream repository using a | ||
selected branch (master by default) from Fedora dist-git repository. | ||
|
||
|
||
## Requirements | ||
|
||
* Fedora dist-git repository. | ||
* Packit config file placed in the upstream repository. | ||
* Pagure API tokens for Fedora Dist-git. | ||
* Github API token. | ||
|
||
|
||
## Tutorial | ||
|
||
1. Pagure dist-git is configured in a way that it requires 2 API tokens in | ||
order to perform a pull request using the API (which packit is using). | ||
Please set these three environment variables using the appropriate tokens: | ||
1. `export PAGURE_USER_TOKEN=<token>` — this token is needed to access data | ||
in pagure. This is meant to be an API token of your user: | ||
https://src.fedoraproject.org/settings#nav-api-tab | ||
2. `export PAGURE_FORK_TOKEN=<token>` — packit needs this token to create a | ||
pull request: | ||
https://src.fedoraproject.org/fork/YOU/rpms/PACKAGE/settings#apikeys-tab | ||
If the fork does not exist, you have to create it in Pagure's web | ||
interface. We are working with Fedora team to relax this requirement. | ||
3. `export GITHUB_TOKEN=<token>` — you can obtain the token over here: | ||
https://github.com/settings/tokens | ||
|
||
2. Files which are synced are mentioned in `.packit.yaml` as `synced_files` value. | ||
|
||
3. Once you want to sync Fedora dist-git repo into the upstream repo, | ||
run `packit sync-from-downstream` in a working directory of your upstream | ||
repository: | ||
```bash | ||
$ git clone https://github.com/user-cont/colin.git | ||
|
||
$ cd colin | ||
|
||
$ packit sync-from-downstream | ||
upstream active branch master | ||
Cloning repo: https://src.fedoraproject.org/rpms/colin.git -> /tmp/tmph9npe78e | ||
using master dist-git branch | ||
syncing /tmp/tmph9npe78e/colin.spec | ||
PR created: https://api.github.com/repos/phracek/colin/pulls/3 | ||
``` | ||
|
||
|
||
## `packit sync-from-downstream --help` | ||
|
||
``` | ||
Usage: packit sync-from-downstream [OPTIONS] [PATH_OR_URL] | ||
|
||
Copy synced files from Fedora dist-git into upstream by opening a pull | ||
request. | ||
|
||
PATH_OR_URL argument is a local path or a URL to the upstream git | ||
repository, it defaults to the current working directory | ||
|
||
Options: | ||
--dist-git-branch TEXT Source branch in dist-git for sync. | ||
--upstream-branch TEXT Target branch in upstream to sync to. | ||
--no-pr Pull request is not create. | ||
-h, --help Show this message and exit. | ||
|
||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
""" | ||
Update selected component from upstream in Fedora | ||
""" | ||
|
||
import logging | ||
import os | ||
|
||
import click | ||
|
||
from packit.cli.types import LocalProjectParameter | ||
from packit.cli.utils import cover_packit_exception, get_packit_api | ||
from packit.config import pass_config, get_context_settings | ||
|
||
logger = logging.getLogger(__file__) | ||
|
||
|
||
@click.command("sync-from-downstream", context_settings=get_context_settings()) | ||
@click.option( | ||
"--dist-git-branch", help="Source branch in dist-git for sync.", default="master" | ||
) | ||
@click.option( | ||
"--upstream-branch", help="Target branch in upstream to sync to.", default="master" | ||
) | ||
@click.option("--no-pr", is_flag=True, help="Pull request is not create.") | ||
@click.argument( | ||
"path_or_url", type=LocalProjectParameter(), default=os.path.abspath(os.path.curdir) | ||
) | ||
@pass_config | ||
@cover_packit_exception | ||
def sync_from_downstream(config, dist_git_branch, upstream_branch, no_pr, path_or_url): | ||
""" | ||
Copy synced files from Fedora dist-git into upstream by opening a pull request. | ||
PATH_OR_URL argument is a local path or a URL to the upstream git repository, | ||
it defaults to the current working directory | ||
""" | ||
api = get_packit_api(config=config, local_project=path_or_url) | ||
api.sync_from_downstream(dist_git_branch, upstream_branch, no_pr) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.