Compare commits

..

69 Commits

Author SHA1 Message Date
GitHub Action
e0bf80a6aa Release version 0.44.0 2023-12-09 05:26:00 +00:00
Jose Diaz-Gonzalez
b60034a9d7 fix: do not use raw property in readme
This is disabled on pypi.
2023-12-09 00:25:28 -05:00
Jose Diaz-Gonzalez
878713a4e0 fix: validate release before committing and uploading it 2023-12-09 00:22:36 -05:00
Jose Diaz-Gonzalez
3b0c08cdc1 fix: correct lint issues and show errors on lint 2023-12-09 00:08:19 -05:00
Jose Diaz-Gonzalez
b52d9bfdc8 Merge pull request #215 from josegonzalez/dependabot/pip/certifi-2023.7.22
Bump certifi from 2023.5.7 to 2023.7.22
2023-12-09 00:04:48 -05:00
Jose Diaz-Gonzalez
336b8b746f Merge pull request #223 from Ondkloss/feature/auto-release
Added automatic release workflow, for use with GitHub Actions
2023-12-09 00:04:38 -05:00
Jose Diaz-Gonzalez
4e7d6f7497 Merge pull request #222 from pl4nty/patch-1
feat: create Dockerfile
2023-12-09 00:00:20 -05:00
Jose Diaz-Gonzalez
7d07cbbe4f Merge pull request #224 from hozza/master
more detailed README docs
2023-12-08 23:59:55 -05:00
Jose Diaz-Gonzalez
b80af2a4ca Merge pull request #221 from josegonzalez/dependabot/pip/urllib3-2.0.7
Bump urllib3 from 2.0.2 to 2.0.7
2023-12-08 23:59:20 -05:00
hozza
5dd0744ce0 fix rst html 2023-11-07 16:12:26 +00:00
hozza
81876a2bb3 add contributor section 2023-11-07 16:08:35 +00:00
hozza
a2b13c8109 fix readme wording and format 2023-11-07 16:08:00 +00:00
hozza
f63be3be24 fixed readme working and layout 2023-11-07 15:46:03 +00:00
hozza
9cf85b087f fix readme formatting, spelling and layout 2023-11-07 15:28:39 +00:00
hozza
f449d8bbe3 added details usage and examples
including gotchas, errors and development instructions.
2023-11-07 14:56:43 +00:00
hozza
7d03e4c9bb added verbose install instructions 2023-11-07 14:53:58 +00:00
Halvor Holsten Strand
4406ba7f07 Checkout everything. 2023-10-29 20:37:20 +01:00
Halvor Holsten Strand
febf380c57 Updated to latest Ubuntu LTS while keeping setup-python to stay put on Python 3.8. 2023-10-28 20:19:18 +02:00
Halvor Holsten Strand
f9b627c1e4 Added automatic release workflow, for use with GitHub Actions. 2023-10-28 08:33:58 +02:00
Tom Plant
f998943171 feat: create Dockerfile 2023-10-28 16:30:31 +11:00
dependabot[bot]
2bf8898545 Bump urllib3 from 2.0.2 to 2.0.7
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.0.2 to 2.0.7.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.0.2...2.0.7)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-17 20:24:18 +00:00
Jose Diaz-Gonzalez
dbc1619106 Merge pull request #218 from Ondkloss/fix/win32logger
Suggested modification to fix win32 logging failure
2023-10-09 20:38:38 -04:00
Jose Diaz-Gonzalez
ec210166f7 Merge pull request #219 from Ondkloss/feature/quiet_flag
Add support for quiet flag
2023-10-09 20:34:30 -04:00
Halvor Holsten Strand
ea74aa5094 Merge branch 'master' into feature/quiet_flag. 2023-10-09 12:07:24 +02:00
Halvor Holsten Strand
7437e3abb1 Merge pull request, while keeping -q --quiet flag.
Most changes were already included, only adjusted with black formatting.
2023-10-09 12:01:32 +02:00
Halvor Holsten Strand
6f3be3d0e8 Suggested modification to fix win32 logging failure, due to local variable scope.
Logger does not appear to have any utility within "logging_subprocess".
2023-10-07 19:02:52 +02:00
Jose Diaz-Gonzalez
d7ba57075e Merge pull request #216 from Ondkloss/feature/fine_grained
Add support for fine-grained tokens (continued)
2023-10-07 00:04:17 -04:00
Halvor Holsten Strand
b277baa6ea Update github_backup.py 2023-10-02 09:14:40 +02:00
Halvor Holsten Strand
15de769d67 Simplified one if/elif scenario.
Extracted file reading of another if/elif scenario.
2023-10-01 22:22:15 +02:00
Halvor Holsten Strand
a9d35c0fd5 Ran black. 2023-09-29 14:40:16 +02:00
Halvor Holsten Strand
20f5fd7a86 Merge branch 'master' into feature/fine_grained
# Conflicts:
#	README.rst
#	github_backup/github_backup.py
2023-09-29 14:34:06 +02:00
Halvor Holsten Strand
f12b877509 Keep backwards compatability by going back to "--token" for classic.
Allow "file://" uri for "--token-fine".
2023-09-29 14:01:53 +02:00
dependabot[bot]
96e6f58159 Bump certifi from 2023.5.7 to 2023.7.22
Bumps [certifi](https://github.com/certifi/python-certifi) from 2023.5.7 to 2023.7.22.
- [Commits](https://github.com/certifi/python-certifi/compare/2023.05.07...2023.07.22)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-25 23:20:45 +00:00
Jose Diaz-Gonzalez
d163cd66a4 Merge pull request #214 from ZhymabekRoman/master
fix: refactor logging
2023-06-27 15:21:16 -04:00
ZhymabekRoman
a8a583bed1 fix: minor cosmetic changes 2023-06-25 10:41:48 +06:00
ZhymabekRoman
68e718010f fix: add forgotten variable formatting 2023-06-25 10:39:16 +06:00
ZhymabekRoman
a06c3e9fd3 fix: refactor logging
Based on #195
2023-06-25 10:38:31 +06:00
Jose Diaz-Gonzalez
fe07d5ad09 Merge pull request #212 from ZhymabekRoman/dev-1
fix: minor typo fix
2023-06-23 13:04:17 -04:00
Zhymabek Roman
12799bb72c fix: minor typo fix 2023-06-23 21:27:52 +06:00
Jose Diaz-Gonzalez
f1cf4cd315 Release version 0.43.1 2023-05-29 18:45:57 -04:00
Jose Diaz-Gonzalez
f3340cd9eb chore: add release requirements 2023-05-29 18:45:49 -04:00
Jose Diaz-Gonzalez
0ebaffd102 Release version 0.43.0 2023-05-29 18:44:23 -04:00
Jose Diaz-Gonzalez
2730fc3e5a fix: do not update readme 2023-05-29 18:44:13 -04:00
Jose Diaz-Gonzalez
0b2330c2c4 fix: adjust for black 2023-05-29 18:43:29 -04:00
Jose Diaz-Gonzalez
82e35fb1cf feat: commit gitchangelog.rc to repo so anyone can generate a changelog 2023-05-29 18:43:23 -04:00
Jose Diaz-Gonzalez
e8f027469e fix: adjust for black 2023-05-29 18:37:02 -04:00
Jose Diaz-Gonzalez
37ef0222e1 fix: adjust for black 2023-05-29 18:36:06 -04:00
Jose Diaz-Gonzalez
96a73b3fe8 feat: add release tagging 2023-05-29 18:35:07 -04:00
Jose Diaz-Gonzalez
8b1bfd433c chore: formatting 2023-05-29 18:34:22 -04:00
Jose Diaz-Gonzalez
cca8a851ad chore: run black 2023-05-29 18:32:39 -04:00
josegonzalez
b5d749ec46 Merge pull request #199 from eht16/add_log_level_argument
Add --log-level command line argument
2023-05-29 18:29:41 -04:00
josegonzalez
00e5c019db Merge pull request #207 from kenbailey/kenbailey-patch-1
Check both updated_at and pushed_at properties
2023-05-29 18:29:29 -04:00
Robert Davey
61275c61b2 Update README.rst
Add flags and example for fine-grained tokens
2023-03-28 16:52:48 +01:00
froggleston
60cb484a19 Add support for fine-grained tokens 2023-03-22 14:53:07 +00:00
Ken Bailey
fbb977acf4 Check both updated_at and pushed_at properties
Check both updated_at and pushed_at dates to get the last_update to reduce data retrieved on incremental api calls using since.
2023-02-28 15:44:14 -07:00
Jose Diaz-Gonzalez
07e32b186c Release version 0.42.0 2022-11-28 00:25:13 -05:00
josegonzalez
dcc90b747a Merge pull request #204 from Assimila/exclude_repositories
Add option to exclude repositories
2022-11-28 00:23:20 -05:00
josegonzalez
f414fac108 Merge pull request #202 from TheOneric/pull_backup-regular-comments
Backup regular pull request comments as well
2022-11-28 00:23:08 -05:00
josegonzalez
38692bc836 Merge pull request #201 from TRAdEWORKS/fix-bug-request-url-error-forever-retry
Fix a bug forever retry when request url error
2022-11-28 00:22:54 -05:00
josegonzalez
81362e5596 Merge pull request #200 from TRAdEWORKS/no-prune-flag
Add --no-prune command line argument to disable prune option when doing git fetch
2022-11-28 00:22:40 -05:00
npounder
753a26d0d6 add option to exclude repositories 2022-11-25 12:35:24 +00:00
Oneric
b629a865f4 Backup regular pull request comments as well
Before, only review comments were backed up;
regular comments need to be fetched via issue API.

Fixes: https://github.com/josegonzalez/python-github-backup/issues/150
2022-07-12 18:38:11 +02:00
kornpisey
75ec773a6f fix bug forever retry when request url error 2022-05-30 13:50:23 +09:00
kornpisey
f8a16ee0f8 added --no-prune option to disable prune option when doing git fetch 2022-05-30 13:46:41 +09:00
Enrico Tröger
3d5eb359e2 Add --log-level command line argument
Support changing the log level to the desired value easily.
For example, this is useful to suppress progress messages but
keep logging warnings and errors.
2022-05-26 10:04:36 +02:00
Harrison Wright
125cfca05e Refactor logging and add support for quiet flag 2022-03-23 19:05:36 -05:00
Jose Diaz-Gonzalez
63441ebfbc Release version 0.41.0 2022-03-02 02:36:41 -05:00
Jose Diaz-Gonzalez
7ad324225e Merge pull request #191 from SkySoft-ATM/bug/lfs_mirror
git lfs clone does not respect --mirror
2022-03-02 02:34:17 -05:00
Louis Parisot
885e94a102 git lfs clone doe snot respect --mirror 2022-02-03 11:45:59 +01:00
12 changed files with 1407 additions and 1097 deletions

117
.gitchangelog.rc Normal file
View File

@@ -0,0 +1,117 @@
#
# Format
#
# ACTION: [AUDIENCE:] COMMIT_MSG [@TAG ...]
#
# Description
#
# ACTION is one of 'chg', 'fix', 'new'
#
# Is WHAT the change is about.
#
# 'chg' is for refactor, small improvement, cosmetic changes...
# 'fix' is for bug fixes
# 'new' is for new features, big improvement
#
# SUBJECT is optional and one of 'dev', 'usr', 'pkg', 'test', 'doc'
#
# Is WHO is concerned by the change.
#
# 'dev' is for developpers (API changes, refactors...)
# 'usr' is for final users (UI changes)
# 'pkg' is for packagers (packaging changes)
# 'test' is for testers (test only related changes)
# 'doc' is for doc guys (doc only changes)
#
# COMMIT_MSG is ... well ... the commit message itself.
#
# TAGs are additionnal adjective as 'refactor' 'minor' 'cosmetic'
#
# 'refactor' is obviously for refactoring code only
# 'minor' is for a very meaningless change (a typo, adding a comment)
# 'cosmetic' is for cosmetic driven change (re-indentation, 80-col...)
#
# Example:
#
# new: usr: support of bazaar implemented
# chg: re-indentend some lines @cosmetic
# new: dev: updated code to be compatible with last version of killer lib.
# fix: pkg: updated year of licence coverage.
# new: test: added a bunch of test around user usability of feature X.
# fix: typo in spelling my name in comment. @minor
#
# Please note that multi-line commit message are supported, and only the
# first line will be considered as the "summary" of the commit message. So
# tags, and other rules only applies to the summary. The body of the commit
# message will be displayed in the changelog with minor reformating.
#
# ``ignore_regexps`` is a line of regexps
#
# Any commit having its full commit message matching any regexp listed here
# will be ignored and won't be reported in the changelog.
#
ignore_regexps = [
r'(?i)^(Merge pull request|Merge branch|Release|Update)',
]
#
# ``replace_regexps`` is a dict associating a regexp pattern and its replacement
#
# It will be applied to get the summary line from the full commit message.
#
# Note that you can provide multiple replacement patterns, they will be all
# tried. If None matches, the summary line will be the full commit message.
#
replace_regexps = {
# current format (ie: 'chg: dev: my commit msg @tag1 @tag2')
r'^([cC]hg|[fF]ix|[nN]ew)\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n@]*)(@[a-z]+\s+)*$':
r'\4',
}
# ``section_regexps`` is a list of 2-tuples associating a string label and a
# list of regexp
#
# Commit messages will be classified in sections thanks to this. Section
# titles are the label, and a commit is classified under this section if any
# of the regexps associated is matching.
#
section_regexps = [
('New', [
r'^[nN]ew\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
]),
('Changes', [
r'^[cC]hg\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
]),
('Fix', [
r'^[fF]ix\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
]),
('Other', None # Match all lines
),
]
# ``body_split_regexp`` is a regexp
#
# Commit message body (not the summary) if existing will be split
# (new line) on this regexp
#
body_split_regexp = r'[\n-]'
# ``tag_filter_regexp`` is a regexp
#
# Tags that will be used for the changelog must match this regexp.
#
# tag_filter_regexp = r'^[0-9]+$'
tag_filter_regexp = r'^(?:[vV])?[0-9\.]+$'
# ``unreleased_version_label`` is a string
#
# This label will be used as the changelog Title of the last set of changes
# between last valid tag and HEAD if any.
unreleased_version_label = "%%version%% (unreleased)"

40
.github/workflows/automatic-release.yml vendored Normal file
View File

@@ -0,0 +1,40 @@
name: automatic-release
on:
workflow_dispatch:
inputs:
release_type:
description: Release type
required: true
type: choice
options:
- patch
- minor
- major
jobs:
release:
name: Release
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Git
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.8'
- name: Install prerequisites
run: pip install -r release-requirements.txt
- name: Execute release
env:
SEMVER_BUMP: ${{ github.event.inputs.release_type }}
TWINE_REPOSITORY: ${{ vars.TWINE_REPOSITORY }}
TWINE_USERNAME: ${{ secrets.TWINE_USERNAME }}
TWINE_PASSWORD: ${{ secrets.TWINE_PASSWORD }}
run: ./release $SEMVER_BUMP

19
.github/workflows/tagged-release.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
---
name: "tagged-release"
# yamllint disable-line rule:truthy
on:
push:
tags:
- '*'
jobs:
tagged-release:
name: tagged-release
runs-on: ubuntu-20.04
steps:
- uses: "marvinpinto/action-automatic-releases@v1.2.1"
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
prerelease: false

View File

@@ -1,9 +1,151 @@
Changelog
=========
0.39.0 (2021-03-18)
0.44.0 (2023-12-09)
-------------------
------------------------
Fix
~~~
- Do not use raw property in readme. [Jose Diaz-Gonzalez]
This is disabled on pypi.
- Validate release before committing and uploading it. [Jose Diaz-
Gonzalez]
- Correct lint issues and show errors on lint. [Jose Diaz-Gonzalez]
- Minor cosmetic changes. [ZhymabekRoman]
- Add forgotten variable formatting. [ZhymabekRoman]
- Refactor logging Based on #195. [ZhymabekRoman]
- Minor typo fix. [Zhymabek Roman]
Other
~~~~~
- Bump certifi from 2023.5.7 to 2023.7.22. [dependabot[bot]]
Bumps [certifi](https://github.com/certifi/python-certifi) from 2023.5.7 to 2023.7.22.
- [Commits](https://github.com/certifi/python-certifi/compare/2023.05.07...2023.07.22)
---
updated-dependencies:
- dependency-name: certifi
dependency-type: direct:production
...
- Checkout everything. [Halvor Holsten Strand]
- Added automatic release workflow, for use with GitHub Actions. [Halvor
Holsten Strand]
- Feat: create Dockerfile. [Tom Plant]
- Fix rst html. [hozza]
- Add contributor section. [hozza]
- Fix readme wording and format. [hozza]
- Fixed readme working and layout. [hozza]
- Fix readme formatting, spelling and layout. [hozza]
- Added details usage and examples including gotchas, errors and
development instructions. [hozza]
- Added verbose install instructions. [hozza]
- Bump urllib3 from 2.0.2 to 2.0.7. [dependabot[bot]]
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.0.2 to 2.0.7.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.0.2...2.0.7)
---
updated-dependencies:
- dependency-name: urllib3
dependency-type: direct:production
...
- Suggested modification to fix win32 logging failure, due to local
variable scope. Logger does not appear to have any utility within
"logging_subprocess". [Halvor Holsten Strand]
- Simplified one if/elif scenario. Extracted file reading of another
if/elif scenario. [Halvor Holsten Strand]
- Ran black. [Halvor Holsten Strand]
- Keep backwards compatability by going back to "--token" for classic.
Allow "file://" uri for "--token-fine". [Halvor Holsten Strand]
- Add support for fine-grained tokens. [froggleston]
- Refactor logging and add support for quiet flag. [Harrison Wright]
0.43.1 (2023-05-29)
-------------------
- Chore: add release requirements. [Jose Diaz-Gonzalez]
0.43.0 (2023-05-29)
-------------------
Fix
~~~
- Do not update readme. [Jose Diaz-Gonzalez]
- Adjust for black. [Jose Diaz-Gonzalez]
- Adjust for black. [Jose Diaz-Gonzalez]
- Adjust for black. [Jose Diaz-Gonzalez]
Other
~~~~~
- Feat: commit gitchangelog.rc to repo so anyone can generate a
changelog. [Jose Diaz-Gonzalez]
- Feat: add release tagging. [Jose Diaz-Gonzalez]
- Chore: formatting. [Jose Diaz-Gonzalez]
- Chore: run black. [Jose Diaz-Gonzalez]
- Add --log-level command line argument. [Enrico Tröger]
Support changing the log level to the desired value easily.
For example, this is useful to suppress progress messages but
keep logging warnings and errors.
- Check both updated_at and pushed_at properties. [Ken Bailey]
Check both updated_at and pushed_at dates to get the last_update to reduce data retrieved on incremental api calls using since.
0.42.0 (2022-11-28)
-------------------
- Add option to exclude repositories. [npounder]
- Backup regular pull request comments as well. [Oneric]
Before, only review comments were backed up;
regular comments need to be fetched via issue API.
- Fix bug forever retry when request url error. [kornpisey]
- Added --no-prune option to disable prune option when doing git fetch.
[kornpisey]
0.41.0 (2022-03-02)
-------------------
- Git lfs clone doe snot respect --mirror. [Louis Parisot]
0.40.2 (2021-12-29)
-------------------
- Fix lint issues raised by Flake8. [atinary-afoulon]
According to job:
[ https://app.circleci.com/pipelines/github/josegonzalez/python-github-backup/30/workflows/74eb93f2-2505-435d-b728-03b3cc04c14a/jobs/23 ]
Failed on the following checks:
./github_backup/github_backup.py:20:1: F811 redefinition of unused 'logging' from line 14
./github_backup/github_backup.py:45:1: E302 expected 2 blank lines, found 1
./github_backup/github_backup.py:136:20: E251 unexpected spaces around keyword / parameter equals
0.40.1 (2021-09-22)
-------------------
- Revert to fetch. [Harrison Wright]
0.40.0 (2021-07-12)
-------------------
- Add retry on certain network errors. [Jacek Nykis]
This change includes certain network level errors in the retry logic.
It partially address #110 but I think more comprehensive fix would be useful.
- Pull changes from remote. [Jonas]
use `git pull` to pull actual files from the remote instead of using `fetch` for only the metadata
0.39.0 (2021-03-19)
-------------------
------------
Fix
~~~
@@ -11,16 +153,8 @@ Fix
Other
~~~~~
- Merge pull request #173 from gallofeliz/make-compatible-python-call.
[Jose Diaz-Gonzalez]
Try to make compatible code with direct Python call ; reduce the hard link of the code with the cli
- Try to make compatible code with direct Python call ; reduce the hard
link of the code with the cli. [Gallo Feliz]
- Merge pull request #174 from atorrescogollo/master. [Jose Diaz-
Gonzalez]
Fixed release_name with slash bug
- Fixed release_name with slash bug. [Álvaro Torres Cogollo]
@@ -38,15 +172,6 @@ Fix
Other
~~~~~
- Release version 0.38.0. [Jose Diaz-Gonzalez]
- Merge pull request #172 from samanthaq/always-use-oauth-when-provided.
[Jose Diaz-Gonzalez]
fix: Always clone with OAuth token when provided
- Merge pull request #170 from Mindavi/bugfix/broken-url. [Jose Diaz-
Gonzalez]
Fix broken and incorrect link to github repository
- Change broken link to a fork to a working link to upstream. [Rick van
Schijndel]
@@ -58,10 +183,6 @@ Fix
~~~
- Use distutils.core on error. [Jose Diaz-Gonzalez]
Other
~~~~~
- Release version 0.37.2. [Jose Diaz-Gonzalez]
0.37.1 (2021-01-02)
-------------------
@@ -79,46 +200,24 @@ Fix
- Set long description type
- Gitignore the temporary readme file
Other
~~~~~
- Release version 0.37.1. [Jose Diaz-Gonzalez]
0.37.0 (2021-01-02)
-------------------
- Release version 0.37.0. [Jose Diaz-Gonzalez]
- Merge pull request #158 from albertyw/python3. [Jose Diaz-Gonzalez]
Remove support for python 2
- Add support for python 3.7 and 3.8 in package classifiers. [Albert
Wang]
- Remove support for python 2.7 in package classifiers. [Albert Wang]
- Remove python 2 specific import logic. [Albert Wang]
- Remove python 2 specific logic. [Albert Wang]
- Merge pull request #165 from garymoon/add-skip-archived. [Jose Diaz-
Gonzalez]
Add option to skip archived repositories
- Add ability to skip archived repositories. [Gary Moon]
0.36.0 (2020-08-29)
-------------------
- Release version 0.36.0. [Jose Diaz-Gonzalez]
- Merge pull request #157 from albertyw/lint. [Jose Diaz-Gonzalez]
- Add flake8 instructions to readme. [Albert Wang]
- Fix regex string. [Albert Wang]
- Update boolean check. [Albert Wang]
- Fix whitespace issues. [Albert Wang]
- Do not use bare excepts. [Albert Wang]
- Merge pull request #161 from albertyw/circleci-project-setup. [Jose
Diaz-Gonzalez]
Add circleci config
- Add .circleci/config.yml. [Albert Wang]
- Merge pull request #160 from wbolster/patch-1. [Jose Diaz-Gonzalez]
Include --private flag in example
- Include --private flag in example. [wouter bolsterlee]
By default, private repositories are not included. This is surprising.
@@ -128,38 +227,16 @@ Other
0.35.0 (2020-08-05)
-------------------
- Release version 0.35.0. [Jose Diaz-Gonzalez]
- Merge pull request #156 from samanthaq/restore-optional-throttling.
[Jose Diaz-Gonzalez]
Make API request throttling optional
- Make API request throttling optional. [Samantha Baldwin]
0.34.0 (2020-07-24)
-------------------
- Release version 0.34.0. [Jose Diaz-Gonzalez]
- Merge pull request #153 from 0x6d617474/gist_ssh. [Jose Diaz-Gonzalez]
Add logic for transforming gist repository urls to ssh
- Add logic for transforming gist repository urls to ssh. [Matt Fields]
0.33.1 (2020-05-28)
-------------------
- Release version 0.33.1. [Jose Diaz-Gonzalez]
- Merge pull request #151 from garymoon/readme-update-0.33. [Jose Diaz-
Gonzalez]
- Update the readme for new switches added in 0.33. [Gary Moon]
0.33.0 (2020-04-13)
-------------------
- Release version 0.33.0. [Jose Diaz-Gonzalez]
- Merge pull request #149 from eht16/simple_api_request_throttling.
[Jose Diaz-Gonzalez]
Add basic API request throttling
- Add basic API request throttling. [Enrico Tröger]
A simple approach to throttle API requests and so keep within the rate
@@ -171,50 +248,23 @@ Other
0.32.0 (2020-04-13)
-------------------
- Release version 0.32.0. [Jose Diaz-Gonzalez]
- Merge pull request #148 from eht16/logging_with_timestamp. [Jose Diaz-
Gonzalez]
Add timestamp to log messages
- Add timestamp to log messages. [Enrico Tröger]
- Merge pull request #147 from tomhoover/update-readme. [Jose Diaz-
Gonzalez]
Update README.rst to match 'github-backup -h'
- Update README.rst to match 'github-backup -h' [Tom Hoover]
0.31.0 (2020-02-25)
-------------------
- Release version 0.31.0. [Jose Diaz-Gonzalez]
- Merge pull request #146 from timm3/upstream-123. [Jose Diaz-Gonzalez]
Authenticate as Github App
- #123 update: changed --as-app 'help' description. [ethan]
- #123: Support Authenticating As Github Application. [ethan]
0.30.0 (2020-02-14)
-------------------
- Release version 0.30.0. [Jose Diaz-Gonzalez]
0.29.0 (2020-02-14)
-------------------
- Release version 0.29.0. [Jose Diaz-Gonzalez]
- Merge pull request #145 from timm3/50-v0.28.0. [Jose Diaz-Gonzalez]
#50 - refactor for friendlier import
- #50 update: keep main() in bin. [ethan]
- #50 - refactor for friendlier import. [ethan]
0.28.0 (2020-02-03)
-------------------
- Release version 0.28.0. [Jose Diaz-Gonzalez]
- Merge pull request #143 from smiley/patch-1. [Jose Diaz-Gonzalez]
Remove deprecated (and removed) "git lfs fetch" flags
- Remove deprecated (and removed) git lfs flags. [smiley]
"--tags" and "--force" were removed at some point from "git lfs fetch". This broke our backup script.
@@ -222,11 +272,6 @@ Other
0.27.0 (2020-01-22)
-------------------
- Release version 0.27.0. [Jose Diaz-Gonzalez]
- Merge pull request #142 from einsteinx2/issue/141-import-error-
version. [Jose Diaz-Gonzalez]
Fixed script fails if not installed from pip
- Fixed script fails if not installed from pip. [Ben Baron]
At the top of the script, the line from github_backup import __version__ gets the script's version number to use if the script is called with the -v or --version flags. The problem is that if the script hasn't been installed via pip (for example I cloned the repo directly to my backup server), the script will fail due to an import exception.
@@ -234,26 +279,14 @@ Other
Also presumably it will always use the version number from pip even if running a modified version from git or a fork or something, though this does not fix that as I have no idea how to check if it's running the pip installed version or not. But at least the script will now work fine if cloned from git or just copied to another machine.
closes https://github.com/josegonzalez/python-github-backup/issues/141
- Merge pull request #136 from einsteinx2/issue/88-macos-keychain-
broken-python3. [Jose Diaz-Gonzalez]
Fixed macOS keychain access when using Python 3
- Fixed macOS keychain access when using Python 3. [Ben Baron]
Python 3 is returning bytes rather than a string, so the string concatenation to create the auth variable was throwing an exception which the script was interpreting to mean it couldn't find the password. Adding a conversion to string first fixed the issue.
- Merge pull request #137 from einsteinx2/issue/134-only-use-auth-token-
when-needed. [Jose Diaz-Gonzalez]
Public repos no longer include the auth token
- Public repos no longer include the auth token. [Ben Baron]
When backing up repositories using an auth token and https, the GitHub personal auth token is leaked in each backed up repository. It is included in the URL of each repository's git remote url.
This is not needed as they are public and can be accessed without the token and can cause issues in the future if the token is ever changed, so I think it makes more sense not to have the token stored in each repo backup. I think the token should only be "leaked" like this out of necessity, e.g. it's a private repository and the --prefer-ssh option was not chosen so https with auth token was required to perform the clone.
- Merge pull request #130 from einsteinx2/issue/129-fix-crash-on-
release-asset-download-error. [Jose Diaz-Gonzalez]
Crash when an release asset doesn't exist
- Fixed comment typo. [Ben Baron]
- Switched log_info to log_warning in download_file. [Ben Baron]
- Crash when an release asset doesn't exist. [Ben Baron]
@@ -261,10 +294,6 @@ Other
Currently, the script crashes whenever a release asset is unable to download (for example a 404 response). This change instead logs the failure and allows the script to continue. No retry logic is enabled, but at least it prevents the crash and allows the backup to complete. Retry logic can be implemented later if wanted.
closes https://github.com/josegonzalez/python-github-backup/issues/129
- Merge pull request #132 from einsteinx2/issue/126-prevent-overwriting-
release-assets. [Jose Diaz-Gonzalez]
Separate release assets and skip re-downloading
- Moved asset downloading loop inside the if block. [Ben Baron]
- Separate release assets and skip re-downloading. [Ben Baron]
@@ -275,36 +304,21 @@ Other
This change also now checks if the asset file already exists on disk and skips downloading it. This drastically speeds up addiotnal syncs as it no longer downloads every single release every single time. It will now only download new releases which I believe is the expected behavior.
closes https://github.com/josegonzalez/python-github-backup/issues/126
- Merge pull request #131 from einsteinx2/improve-gitignore. [Jose Diaz-
Gonzalez]
Improved gitignore, macOS files and IDE configs
- Added newline to end of file. [Ben Baron]
- Improved gitignore, macOS files and IDE configs. [Ben Baron]
Ignores the annoying hidden macOS files .DS_Store and ._* as well as the IDE configuration folders for contributors using the popular Visual Studio Code and Atom IDEs (more can be added later as needed).
- Update ISSUE_TEMPLATE.md. [Jose Diaz-Gonzalez]
0.26.0 (2019-09-23)
-------------------
- Release version 0.26.0. [Jose Diaz-Gonzalez]
- Merge pull request #128 from Snawoot/master. [Jose Diaz-Gonzalez]
Workaround gist clone in `--prefer-ssh` mode
- Workaround gist clone in `--prefer-ssh` mode. [Vladislav Yarmak]
- Create PULL_REQUEST.md. [Jose Diaz-Gonzalez]
- Create ISSUE_TEMPLATE.md. [Jose Diaz-Gonzalez]
- Update README.rst. [Jose Diaz-Gonzalez]
- Update README.rst. [Jose Diaz-Gonzalez]
0.25.0 (2019-07-03)
-------------------
- Release version 0.25.0. [Jose Diaz-Gonzalez]
- Merge pull request #120 from 8h2a/patch-1. [Jose Diaz-Gonzalez]
Issue 119: Change retrieve_data to be a generator
- Issue 119: Change retrieve_data to be a generator. [2a]
See issue #119.
@@ -312,43 +326,21 @@ Other
0.24.0 (2019-06-27)
-------------------
- Release version 0.24.0. [Jose Diaz-Gonzalez]
- Merge pull request #117 from QuicketSolutions/master. [Jose Diaz-
Gonzalez]
Add option for Releases
- Merge pull request #5 from QuicketSolutions/QKT-45. [Ethan Timm]
- QKT-45: include assets - update readme. [Ethan Timm]
update readme with flag information for including assets alongside their respective releases
- Merge pull request #4 from whwright/wip-releases. [Ethan Timm]
Download github assets
- Make assets it's own flag. [Harrison Wright]
- Fix super call for python2. [Harrison Wright]
- Fix redirect to s3. [Harrison Wright]
- WIP: download assets. [Harrison Wright]
- Merge pull request #3 from QuicketSolutions/QKT-42. [Ethan Timm]
- QKT-42: releases - add readme info. [ethan]
- Merge pull request #2 from QuicketSolutions/QKT-42. [Ethan Timm]
QKT-42 update: shorter command flag
- QKT-42 update: shorter command flag. [ethan]
- Merge pull request #1 from QuicketSolutions/QKT-42. [Ethan Timm]
- QKT-42: support saving release information. [ethan]
- Merge pull request #118 from whwright/115-fix-pull-details. [Jose
Diaz-Gonzalez]
Fix pull details
- Fix pull details. [Harrison Wright]
0.23.0 (2019-06-04)
-------------------
- Release version 0.23.0. [Jose Diaz-Gonzalez]
- Merge pull request #113 from kleag/master. [Jose Diaz-Gonzalez]
Avoid to crash in case of HTTP 502 error
- Avoid to crash in case of HTTP 502 error. [Gael de Chalendar]
Survive also on socket.error connections like on HTTPError or URLError.
@@ -365,32 +357,15 @@ Fix
Refs #106
Other
~~~~~
- Release version 0.22.2. [Jose Diaz-Gonzalez]
- Merge pull request #107 from josegonzalez/patch-1. [Jose Diaz-
Gonzalez]
fix: warn instead of error
0.22.1 (2019-02-21)
-------------------
- Release version 0.22.1. [Jose Diaz-Gonzalez]
- Merge pull request #106 from jstetic/master. [Jose Diaz-Gonzalez]
Log URL error
- Log URL error https://github.com/josegonzalez/python-github-
backup/issues/105. [JOHN STETIC]
0.22.0 (2019-02-01)
-------------------
- Release version 0.22.0. [Jose Diaz-Gonzalez]
- Merge pull request #103 from whwright/98-better-logging. [Jose Diaz-
Gonzalez]
Fix accidental system exit with better logging strategy
- Remove unnecessary sys.exit call. [W. Harrison Wright]
- Add org check to avoid incorrect log output. [W. Harrison Wright]
- Fix accidental system exit with better logging strategy. [W. Harrison
@@ -399,10 +374,6 @@ Other
0.21.1 (2018-12-25)
-------------------
- Release version 0.21.1. [Jose Diaz-Gonzalez]
- Merge pull request #101 from ecki/patch-2. [Jose Diaz-Gonzalez]
Mark options which are not included in --all
- Mark options which are not included in --all. [Bernd]
As discussed in Issue #100
@@ -410,22 +381,12 @@ Other
0.21.0 (2018-11-28)
-------------------
- Release version 0.21.0. [Jose Diaz-Gonzalez]
- Merge pull request #97 from whwright/94-fix-user-repos. [Jose Diaz-
Gonzalez]
Correctly download repos when user arg != authenticated user
- Correctly download repos when user arg != authenticated user. [W.
Harrison Wright]
0.20.1 (2018-09-29)
-------------------
- Release version 0.20.1. [Jose Diaz-Gonzalez]
- Merge pull request #92 from whwright/87-fix-starred-bug. [Jose Diaz-
Gonzalez]
Clone the specified user's starred repos/gists, not the authenticated user
- Clone the specified user's gists, not the authenticated user. [W.
Harrison Wright]
- Clone the specified user's starred repos, not the authenticated user.
@@ -434,7 +395,6 @@ Other
0.20.0 (2018-03-24)
-------------------
- Release version 0.20.0. [Jose Diaz-Gonzalez]
- Chore: drop Python 2.6. [Jose Diaz-Gonzalez]
- Feat: simplify release script. [Jose Diaz-Gonzalez]
@@ -446,33 +406,15 @@ Fix
~~~
- Cleanup pep8 violations. [Jose Diaz-Gonzalez]
Other
~~~~~
- Release version 0.19.2. [Jose Diaz-Gonzalez]
0.19.1 (2018-03-24)
-------------------
- Release version 0.19.1. [Jose Diaz-Gonzalez]
0.19.0 (2018-03-24)
-------------------
- Release version 0.19.0. [Jose Diaz-Gonzalez]
- Merge pull request #77 from mayflower/pull-details. [Jose Diaz-
Gonzalez]
Pull Details
- Add additional output for the current request. [Robin Gloster]
This is useful to have some progress indication for huge repositories.
- Add option to backup additional PR details. [Robin Gloster]
Some payload is only included when requesting a single pull request
- Merge pull request #84 from johbo/fix-python36-skip-existing. [Jose
Diaz-Gonzalez]
Mark string as binary in comparison for skip_existing
- Mark string as binary in comparison for skip_existing. [Johannes
Bornhold]
@@ -483,20 +425,11 @@ Other
0.18.0 (2018-02-22)
-------------------
- Release version 0.18.0. [Jose Diaz-Gonzalez]
- Merge pull request #82 from sgreene570/add-followers. [Jose Diaz-
Gonzalez]
Add option to fetch followers/following JSON data
- Add option to fetch followers/following JSON data. [Stephen Greene]
0.17.0 (2018-02-20)
-------------------
- Release version 0.17.0. [Jose Diaz-Gonzalez]
- Merge pull request #81 from whwright/gists. [Jose Diaz-Gonzalez]
Add ability to back up gists
- Short circuit gists backup process. [W. Harrison Wright]
- Formatting. [W. Harrison Wright]
- Add ability to backup gists. [W. Harrison Wright]
@@ -504,94 +437,41 @@ Other
0.16.0 (2018-01-22)
-------------------
- Release version 0.16.0. [Jose Diaz-Gonzalez]
- Merge pull request #78 from whwright/clone-starred-repos. [Jose Diaz-
Gonzalez]
Clone starred repos
- Update README.rst. [Jose Diaz-Gonzalez]
- Update documentation. [W. Harrison Wright]
- Change option to --all-starred. [W. Harrison Wright]
- JK don't update documentation. [W. Harrison Wright]
- Update documentation. [W. Harrison Wright]
- Put starred clone repoistories under a new option. [W. Harrison
Wright]
- Add comment. [W. Harrison Wright]
- Add ability to clone starred repos. [W. Harrison Wright]
0.15.0 (2017-12-11)
-------------------
- Release version 0.15.0. [Jose Diaz-Gonzalez]
- Merge pull request #75 from slibby/slibby-patch-windows. [Jose Diaz-
Gonzalez]
update check_io() to allow scripts to run on Windows
- Update logging_subprocess function. [Sam Libby]
1. added newline for return
2. added one-time warning (once per subprocess)
- Update check_io() to allow scripts to run on Windows. [Sam Libby]
0.14.1 (2017-10-11)
-------------------
- Release version 0.14.1. [Jose Diaz-Gonzalez]
- Merge pull request #70 from epfremmer/patch-1. [Jose Diaz-Gonzalez]
Fix arg not defined error
- Fix arg not defined error. [Edward Pfremmer]
0.14.0 (2017-10-11)
-------------------
- Release version 0.14.0. [Jose Diaz-Gonzalez]
- Merge pull request #68 from pieterclaerhout/master. [Jose Diaz-
Gonzalez]
Added support for LFS clones
- Updated the readme. [pieterclaerhout]
- Added a check to see if git-lfs is installed when doing an LFS clone.
[pieterclaerhout]
- Added support for LFS clones. [pieterclaerhout]
- Merge pull request #66 from albertyw/python3. [Jose Diaz-Gonzalez]
Explicitly support python 3
- Add pypi info to readme. [Albert Wang]
- Explicitly support python 3 in package description. [Albert Wang]
- Merge pull request #65 from mumblez/master. [Jose Diaz-Gonzalez]
add couple examples to help new users
- Add couple examples to help new users. [Yusuf Tran]
0.13.2 (2017-05-06)
-------------------
- Release version 0.13.2. [Jose Diaz-Gonzalez]
- Merge pull request #64 from karlicoss/fix-remotes. [Jose Diaz-
Gonzalez]
Fix remotes while updating repository
- Fix remotes while updating repository. [Dima Gerasimov]
0.13.1 (2017-04-11)
-------------------
- Release version 0.13.1. [Jose Diaz-Gonzalez]
- Merge pull request #61 from McNetic/fix_empty_updated_at. [Jose Diaz-
Gonzalez]
Fix error when repository has no updated_at value
- Fix error when repository has no updated_at value. [Nicolai Ehemann]
0.13.0 (2017-04-05)
-------------------
- Release version 0.13.0. [Jose Diaz-Gonzalez]
- Merge pull request #59 from martintoreilly/master. [Jose Diaz-
Gonzalez]
Add support for storing PAT in OSX keychain
- Add OS check for OSX specific keychain args. [Martin O'Reilly]
Keychain arguments are only supported on Mac OSX.
@@ -609,19 +489,11 @@ Other
0.12.1 (2017-03-27)
-------------------
- Release version 0.12.1. [Jose Diaz-Gonzalez]
- Merge pull request #57 from acdha/reuse-existing-remotes. [Jose Diaz-
Gonzalez]
Avoid remote branch name churn
- Avoid remote branch name churn. [Chris Adams]
This avoids the backup output having lots of "[new branch]" messages
because removing the old remote name removed all of the existing branch
references.
- Merge pull request #55 from amaczuga/master. [Jose Diaz-Gonzalez]
Fix detection of bare git directories
- Fix detection of bare git directories. [Andrzej Maczuga]
@@ -636,49 +508,22 @@ Fix
Other
~~~~~
- Release version 0.12.0. [Jose Diaz-Gonzalez]
- Pep8: E501 line too long (83 > 79 characters) [Jose Diaz-Gonzalez]
- Pep8: E128 continuation line under-indented for visual indent. [Jose
Diaz-Gonzalez]
- Merge pull request #54 from amaczuga/master. [Jose Diaz-Gonzalez]
Support archivization using bare git clones
- Support archivization using bare git clones. [Andrzej Maczuga]
- Merge pull request #53 from trel/master. [Jose Diaz-Gonzalez]
fix typo, 3x
- Fix typo, 3x. [Terrell Russell]
0.11.0 (2016-10-26)
-------------------
- Release version 0.11.0. [Jose Diaz-Gonzalez]
- Merge pull request #52 from bjodah/fix-gh-51. [Jose Diaz-Gonzalez]
Support --token file:///home/user/token.txt (fixes gh-51)
- Support --token file:///home/user/token.txt (fixes gh-51) [Björn
Dahlgren]
- Merge pull request #48 from albertyw/python3. [Jose Diaz-Gonzalez]
Support Python 3
- Fix some linting. [Albert Wang]
- Fix byte/string conversion for python 3. [Albert Wang]
- Support python 3. [Albert Wang]
- Merge pull request #46 from remram44/encode-password. [Jose Diaz-
Gonzalez]
Encode special characters in password
- Encode special characters in password. [Remi Rampin]
- Merge pull request #45 from remram44/cli-programname. [Jose Diaz-
Gonzalez]
Fix program name
- Update README.rst. [Remi Rampin]
- Don't pretend program name is "Github Backup" [Remi Rampin]
- Merge pull request #44 from remram44/readme-git-https. [Jose Diaz-
Gonzalez]
Don't install over insecure connection
- Don't install over insecure connection. [Remi Rampin]
The git:// protocol is unauthenticated and unencrypted, and no longer advertised by GitHub. Using HTTPS shouldn't impact performance.
@@ -686,10 +531,6 @@ Other
0.10.3 (2016-08-21)
-------------------
- Release version 0.10.3. [Jose Diaz-Gonzalez]
- Merge pull request #30 from jonasrmichel/master. [Jose Diaz-Gonzalez]
Fixes #29
- Fixes #29. [Jonas Michel]
Reporting an error when the user's rate limit is exceeded causes
@@ -707,23 +548,13 @@ Other
0.10.2 (2016-08-21)
-------------------
- Release version 0.10.2. [Jose Diaz-Gonzalez]
- Add a note regarding git version requirement. [Jose Diaz-Gonzalez]
Closes #37
0.10.1 (2016-08-21)
-------------------
- Release version 0.10.1. [Jose Diaz-Gonzalez]
0.10.0 (2016-08-18)
-------------------
- Release version 0.10.0. [Jose Diaz-Gonzalez]
- Merge pull request #42 from robertwb/master. [Jose Diaz-Gonzalez]
Implement incremental updates
- Implement incremental updates. [Robert Bradshaw]
Guarded with an --incremental flag.
@@ -736,21 +567,11 @@ Other
0.9.0 (2016-03-29)
------------------
- Release version 0.9.0. [Jose Diaz-Gonzalez]
- Merge pull request #36 from zlabjp/fix-cloning-private-repos. [Jose
Diaz-Gonzalez]
Fix cloning private repos with basic auth or token
- Fix cloning private repos with basic auth or token. [Kazuki Suda]
0.8.0 (2016-02-14)
------------------
- Release version 0.8.0. [Jose Diaz-Gonzalez]
- Merge pull request #35 from eht16/issue23_store_pullrequests_once.
[Jose Diaz-Gonzalez]
Don't store issues which are actually pull requests
- Don't store issues which are actually pull requests. [Enrico Tröger]
This prevents storing pull requests twice since the Github API returns
@@ -761,65 +582,31 @@ Other
0.7.0 (2016-02-02)
------------------
- Release version 0.7.0. [Jose Diaz-Gonzalez]
- Merge pull request #32 from albertyw/soft-fail-hooks. [Jose Diaz-
Gonzalez]
Softly fail if not able to read hooks
- Softly fail if not able to read hooks. [Albert Wang]
- Merge pull request #33 from albertyw/update-readme. [Jose Diaz-
Gonzalez]
Add note about 2-factor auth in readme
- Add note about 2-factor auth. [Albert Wang]
- Merge pull request #31 from albertyw/fix-private-repos. [Jose Diaz-
Gonzalez]
Fix reading user's private repositories
- Make user repository search go through endpoint capable of reading
private repositories. [Albert Wang]
- Merge pull request #28 from alexmojaki/getpass. [Jose Diaz-Gonzalez]
Prompt for password if only username given
- Update README with new CLI usage. [Alex Hall]
- Prompt for password if only username given. [Alex Hall]
0.6.0 (2015-11-10)
------------------
- Release version 0.6.0. [Jose Diaz-Gonzalez]
- Force proper remote url. [Jose Diaz-Gonzalez]
- Merge pull request #24 from eht16/add_backup_hooks. [Jose Diaz-
Gonzalez]
Add backup hooks
- Improve error handling in case of HTTP errors. [Enrico Tröger]
In case of a HTTP status code 404, the returned 'r' was never assigned.
In case of URL errors which are not timeouts, we probably should bail
out.
- Add --hooks to also include web hooks into the backup. [Enrico Tröger]
- Merge pull request #22 from eht16/issue_17_create_output_directory.
[Jose Diaz-Gonzalez]
Create the user specified output directory if it does not exist
- Create the user specified output directory if it does not exist.
[Enrico Tröger]
Fixes #17.
- Merge pull request #21 from eht16/fix_get_response_missing_auth. [Jose
Diaz-Gonzalez]
Add missing auth argument to _get_response()
- Add missing auth argument to _get_response() [Enrico Tröger]
When running unauthenticated and Github starts rate-limiting the client,
github-backup crashes because the used auth variable in _get_response()
was not available. This change should fix it.
- Merge pull request #20 from
eht16/improve_error_msg_on_non_existing_repo. [Jose Diaz-Gonzalez]
Add repository URL to error message for non-existing repositories
- Add repository URL to error message for non-existing repositories.
[Enrico Tröger]
@@ -830,69 +617,28 @@ Other
0.5.0 (2015-10-10)
------------------
- Release version 0.5.0. [Jose Diaz-Gonzalez]
- Add release script. [Jose Diaz-Gonzalez]
- Refactor to both simplify codepath as well as follow PEP8 standards.
[Jose Diaz-Gonzalez]
- Merge pull request #19 from Embed-Engineering/retry-timeout. [Jose
Diaz-Gonzalez]
Retry 3 times when the connection times out
- Retry 3 times when the connection times out. [Mathijs Jonker]
- Merge pull request #15 from kromkrom/master. [Jose Diaz-Gonzalez]
Preserve Unicode characters in the output file
- Update github-backup. [Kirill Grushetsky]
- Update github-backup. [Kirill Grushetsky]
- Made unicode output defalut. [Kirill Grushetsky]
- Import alphabetised. [Kirill Grushetsky]
- Preserve Unicode characters in the output file. [Kirill Grushetsky]
Added option to preserve Unicode characters in the output file
- Merge pull request #14 from aensley/master. [Jose Diaz-Gonzalez]
Added backup of labels and milestones.
- Josegonzales/python-github-backup#12 Added backup of labels and
milestones. [aensley]
- Merge pull request #11 from Embed-Engineering/master. [Jose Diaz-
Gonzalez]
Added test for uninitialized repo's (or wiki's)
- Fixed indent. [Mathijs Jonker]
- Update github-backup. [mjonker-embed]
- Skip unitialized repo's. [mjonker-embed]
These gave me errors which caused mails from crontab.
- Merge pull request #10 from Embed-Engineering/master. [Jose Diaz-
Gonzalez]
Added prefer-ssh
- Added prefer-ssh. [mjonker-embed]
Was needed for my back-up setup, code includes this but readme wasn't updated
- Merge pull request #9 from acdha/ratelimit-retries. [Jose Diaz-
Gonzalez]
Retry API requests which failed due to rate-limiting
- Retry API requests which failed due to rate-limiting. [Chris Adams]
This allows operation to continue, albeit at a slower pace,
if you have enough data to trigger the API rate limits
- Release 0.4.0. [Jose Diaz-Gonzalez]
- Merge pull request #7 from acdha/repo-backup-overhaul. [Jose Diaz-
Gonzalez]
Repo backup overhaul
- Update repository back up handling for wikis. [Chris Adams]
* Now wikis will follow the same logic as the main repo
checkout for --prefer-ssh.
* The regular repository and wiki paths both use the same
function to handle either cloning or updating a local copy
of the remote repo
* All git updates will now use “git fetch --all --tags”
to ensure that tags and branches other than master will
also be backed up
- Logging_subprocess: always log when a command fails. [Chris Adams]
Previously git clones could fail without any indication
@@ -907,19 +653,10 @@ Other
The previous commit used the wrong URL for a private repo. This was
masked by the lack of error loging in logging_subprocess (which will be
in a separate branch)
- Merge pull request #6 from acdha/allow-clone-over-ssh. [Jose Diaz-
Gonzalez]
Add an option to prefer checkouts over SSH
- Add an option to prefer checkouts over SSH. [Chris Adams]
This is really useful with private repos to avoid being nagged
for credentials for every repository
- Release 0.3.0. [Jose Diaz-Gonzalez]
- Merge pull request #4 from klaude/pull_request_support. [Jose Diaz-
Gonzalez]
Add pull request support
- Add pull request support. [Kevin Laude]
Back up reporitory pull requests by passing the --include-pulls
@@ -931,10 +668,6 @@ Other
Pull requests are automatically backed up when the --all argument is
uesd.
- Merge pull request #5 from klaude/github-enterprise-support. [Jose
Diaz-Gonzalez]
Add GitHub Enterprise Support
- Add GitHub Enterprise support. [Kevin Laude]
Pass the -H or --github-host argument with a GitHub Enterprise hostname
@@ -944,13 +677,9 @@ Other
0.2.0 (2014-09-22)
------------------
- Release 0.2.0. [Jose Diaz-Gonzalez]
- Add support for retrieving repositories. Closes #1. [Jose Diaz-
Gonzalez]
- Fix PEP8 violations. [Jose Diaz-Gonzalez]
- Merge pull request #2 from johnyf/master. [Jose Diaz-Gonzalez]
add authorization to header only if specified by user
- Add authorization to header only if specified by user. [Ioannis
Filippidis]
- Fill out readme more. [Jose Diaz-Gonzalez]

16
Dockerfile Normal file
View File

@@ -0,0 +1,16 @@
FROM python:3.9.18-slim
RUN --mount=type=cache,target=/var/cache/apt \
apt-get update && apt-get install -y git git-lfs
WORKDIR /usr/src/app
COPY release-requirements.txt .
RUN --mount=type=cache,target=/root/.cache/pip \
pip install -r release-requirements.txt
COPY . .
RUN --mount=type=cache,target=/root/.cache/pip \
pip install .
ENTRYPOINT [ "github-backup" ]

View File

@@ -4,14 +4,13 @@ github-backup
|PyPI| |Python Versions|
This project is considered feature complete for the primary maintainer. If you would like a bugfix or enhancement and cannot sponsor the work, pull requests are welcome. Feel free to contact the maintainer for consulting estimates if desired.
backup a github user or organization
The package can be used to backup an *entire* `Github <https://github.com/>`_ organization, repository or user account, including starred repos, issues and wikis in the most appropriate format (clones for wikis, json files for issues).
Requirements
============
- GIT 1.9+
- Python
Installation
============
@@ -20,29 +19,38 @@ Using PIP via PyPI::
pip install github-backup
Using PIP via Github::
Using PIP via Github (more likely the latest version)::
pip install git+https://github.com/josegonzalez/python-github-backup.git#egg=github-backup
Usage
=====
*Install note for python newcomers:*
CLI Usage is as follows::
Python scripts are unlikely to be included in your ``$PATH`` by default, this means it cannot be run directly in terminal with ``$ github-backup ...``, you can either add python's install path to your environments ``$PATH`` or call the script directly e.g. using ``$ ~/.local/bin/github-backup``.*
github-backup [-h] [-u USERNAME] [-p PASSWORD] [-t TOKEN] [--as-app]
[-o OUTPUT_DIRECTORY] [-i] [--starred] [--all-starred]
[--watched] [--followers] [--following] [--all]
[--issues] [--issue-comments] [--issue-events] [--pulls]
Basic Help
==========
Show the CLI help output::
github-backup -h
CLI Help output::
github-backup [-h] [-u USERNAME] [-p PASSWORD] [-t TOKEN_CLASSIC]
[-f TOKEN_FINE] [--as-app] [-o OUTPUT_DIRECTORY]
[-l LOG_LEVEL] [-i] [--starred] [--all-starred]
[--watched] [--followers] [--following] [--all] [--issues]
[--issue-comments] [--issue-events] [--pulls]
[--pull-comments] [--pull-commits] [--pull-details]
[--labels] [--hooks] [--milestones] [--repositories]
[--bare] [--lfs] [--wikis] [--gists] [--starred-gists]
[--skip-existing] [-L [LANGUAGES [LANGUAGES ...]]]
[--skip-archived] [--skip-existing] [-L [LANGUAGES ...]]
[-N NAME_REGEX] [-H GITHUB_HOST] [-O] [-R REPOSITORY]
[-P] [-F] [--prefer-ssh] [-v]
[--keychain-name OSX_KEYCHAIN_ITEM_NAME]
[--keychain-account OSX_KEYCHAIN_ITEM_ACCOUNT]
[--releases] [--assets] [--throttle-limit THROTTLE_LIMIT]
[--throttle-pause THROTTLE_PAUSE]
[--releases] [--assets] [--exclude [REPOSITORY [REPOSITORY ...]]
[--throttle-limit THROTTLE_LIMIT] [--throttle-pause THROTTLE_PAUSE]
USER
Backup a github account
@@ -57,12 +65,18 @@ CLI Usage is as follows::
-p PASSWORD, --password PASSWORD
password for basic auth. If a username is given but
not a password, the password will be prompted for.
-t TOKEN, --token TOKEN
-f TOKEN_FINE, --token-fine TOKEN_FINE
fine-grained personal access token or path to token
(file://...)
-t TOKEN_CLASSIC, --token TOKEN_CLASSIC
personal access, OAuth, or JSON Web token, or path to
token (file://...)
--as-app authenticate as github app instead of as a user.
-o OUTPUT_DIRECTORY, --output-directory OUTPUT_DIRECTORY
directory at which to backup the repositories
-l LOG_LEVEL, --log-level LOG_LEVEL
log level to use (default: info, possible levels:
debug, info, warning, error, critical)
-i, --incremental incremental backup
--starred include JSON output of starred repositories in backup
--all-starred include starred repositories in backup [*]
@@ -112,6 +126,8 @@ CLI Usage is as follows::
binaries
--assets include assets alongside release information; only
applies if including releases
--exclude [REPOSITORY [REPOSITORY ...]]
names of repositories to exclude from backup.
--throttle-limit THROTTLE_LIMIT
start throttling of GitHub API requests after this
amount of API requests remain
@@ -121,15 +137,43 @@ CLI Usage is as follows::
--throttle-limit to be set)
The package can be used to backup an *entire* organization or repository, including issues and wikis in the most appropriate format (clones for wikis, json files for issues).
Usage Details
=============
Authentication
==============
--------------
**Password-based authentication** will fail if you have two-factor authentication enabled, and will `be deprecated <https://github.blog/2023-03-09-raising-the-bar-for-software-security-github-2fa-begins-march-13/>`_ by 2023 EOY.
``--username`` is used for basic password authentication and separate from the positional argument ``USER``, which specifies the user account you wish to back up.
**Classic tokens** are `slightly less secure <https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#personal-access-tokens-classic>`_ as they provide very coarse-grained permissions.
If you need authentication for long-running backups (e.g. for a cron job) it is recommended to use **fine-grained personal access token** ``-f TOKEN_FINE``.
Fine Tokens
~~~~~~~~~~~
You can "generate new token", choosing the repository scope by selecting specific repos or all repos. On Github this is under *Settings -> Developer Settings -> Personal access tokens -> Fine-grained Tokens*
Customise the permissions for your use case, but for a personal account full backup you'll need to enable the following permissions:
**User permissions**: Read access to followers, starring, and watching.
**Repository permissions**: Read access to code, commit statuses, issues, metadata, pages, pull requests, and repository hooks.
Prefer SSH
~~~~~~~~~~
If cloning repos is enabled with ``--repositories``, ``--all-starred``, ``--wikis``, ``--gists``, ``--starred-gists`` using the ``--prefer-ssh`` argument will use ssh for cloning the git repos, but all other connections will still use their own protocol, e.g. API requests for issues uses HTTPS.
To clone with SSH, you'll need SSH authentication setup `as usual with Github <https://docs.github.com/en/authentication/connecting-to-github-with-ssh>`_, e.g. via SSH public and private keys.
Note: Password-based authentication will fail if you have two-factor authentication enabled.
Using the Keychain on Mac OSX
=============================
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Note: On Mac OSX the token can be stored securely in the user's keychain. To do this:
1. Open Keychain from "Applications -> Utilities -> Keychain Access"
@@ -143,31 +187,135 @@ Note: When you run github-backup, you will be asked whether you want to allow "
1. **Allow:** In this case you will need to click "Allow" each time you run `github-backup`
2. **Always Allow:** In this case, you will not be asked for permission when you run `github-backup` in future. This is less secure, but is required if you want to schedule `github-backup` to run automatically
About Git LFS
=============
When you use the "--lfs" option, you will need to make sure you have Git LFS installed.
Github Rate-limit and Throttling
--------------------------------
"github-backup" will automatically throttle itself based on feedback from the Github API.
Their API is usually rate-limited to 5000 calls per hour. The API will ask github-backup to pause until a specific time when the limit is reset again (at the start of the next hour). This continues until the backup is complete.
During a large backup, such as ``--all-starred``, and on a fast connection this can result in (~20 min) pauses with bursts of API calls periodically maxing out the API limit. If this is not suitable `it has been observed <https://github.com/josegonzalez/python-github-backup/issues/76#issuecomment-636158717>`_ under real-world conditions that overriding the throttle with ``--throttle-limit 5000 --throttle-pause 0.6`` provides a smooth rate across the hour, although a ``--throttle-pause 0.72`` (3600 seconds [1 hour] / 5000 limit) is theoretically safer to prevent large rate-limit pauses.
About Git LFS
-------------
When you use the ``--lfs`` option, you will need to make sure you have Git LFS installed.
Instructions on how to do this can be found on https://git-lfs.github.com.
Examples
========
Backup all repositories, including private ones::
Gotchas / Known-issues
======================
All is not everything
---------------------
The ``--all`` argument does not include; cloning private repos (``-P, --private``), cloning forks (``-F, --fork``) cloning starred repositories (``--all-starred``), ``--pull-details``, cloning LFS repositories (``--lfs``), cloning gists (``--starred-gists``) or cloning starred gist repos (``--starred-gists``). See examples for more.
Cloning all starred size
------------------------
Using the ``--all-starred`` argument to clone all starred repositories may use a large amount of storage space, especially if ``--all`` or more arguments are used. e.g. commonly starred repos can have tens of thousands of issues, many large assets and the repo itself etc. Consider just storing links to starred repos in JSON format with ``--starred``.
Incremental Backup
------------------
Using (``-i, --incremental``) will only request new data from the API **since the last run (successful or not)**. e.g. only request issues from the API since the last run.
This means any blocking errors on previous runs can cause a large amount of missing data in backups.
Known blocking errors
---------------------
Some errors will block the backup run by exiting the script. e.g. receiving a 403 Forbidden error from the Github API.
If the incremental argument is used, this will result in the next backup only requesting API data since the last blocked/failed run. Potentially causing unexpected large amounts of missing data.
It's therefore recommended to only use the incremental argument if the output/result is being actively monitored, or complimented with periodic full non-incremental runs, to avoid unexpected missing data in a regular backup runs.
1. **Starred public repo hooks blocking**
Since the ``--all`` argument includes ``--hooks``, if you use ``--all`` and ``--all-starred`` together to clone a users starred public repositories, the backup will likely error and block the backup continuing.
This is due to needing the correct permission for ``--hooks`` on public repos.
2. **Releases blocking**
A known ``--releases`` (required for ``--assets``) error will sometimes block the backup.
If you're backing up a lot of repositories with releases e.g. an organisation or ``--all-starred``. You may need to remove ``--releases`` (and therefore ``--assets``) to complete a backup. Documented in `issue 209 <https://github.com/josegonzalez/python-github-backup/issues/209>`_.
"bare" is actually "mirror"
---------------------------
Using the bare clone argument (``--bare``) will actually call git's ``clone --mirror`` command. There's a subtle difference between `bare <https://www.git-scm.com/docs/git-clone#Documentation/git-clone.txt---bare>`_ and `mirror <https://www.git-scm.com/docs/git-clone#Documentation/git-clone.txt---mirror>`_ clone.
*From git docs "Compared to --bare, --mirror not only maps local branches of the source to local branches of the target, it maps all refs (including remote-tracking branches, notes etc.) and sets up a refspec configuration such that all these refs are overwritten by a git remote update in the target repository."*
Starred gists vs starred repo behaviour
---------------------------------------
The starred normal repo cloning (``--all-starred``) argument stores starred repos separately to the users own repositories. However, using ``--starred-gists`` will store starred gists within the same directory as the users own gists ``--gists``. Also, all gist repo directory names are IDs not the gist's name.
Skip existing on incomplete backups
-----------------------------------
The ``--skip-existing`` argument will skip a backup if the directory already exists, even if the backup in that directory failed (perhaps due to a blocking error). This may result in unexpected missing data in a regular backup.
Github Backup Examples
======================
Backup all repositories, including private ones using a classic token::
export ACCESS_TOKEN=SOME-GITHUB-TOKEN
github-backup WhiteHouse --token $ACCESS_TOKEN --organization --output-directory /tmp/white-house --repositories --private
Backup a single organization repository with everything else (wiki, pull requests, comments, issues etc)::
Use a fine-grained access token to backup a single organization repository with everything else (wiki, pull requests, comments, issues etc)::
export ACCESS_TOKEN=SOME-GITHUB-TOKEN
export FINE_ACCESS_TOKEN=SOME-GITHUB-TOKEN
ORGANIZATION=docker
REPO=cli
# e.g. git@github.com:docker/cli.git
github-backup $ORGANIZATION -P -t $ACCESS_TOKEN -o . --all -O -R $REPO
github-backup $ORGANIZATION -P -f $FINE_ACCESS_TOKEN -o . --all -O -R $REPO
Quietly and incrementally backup useful Github user data (public and private repos with SSH) including; all issues, pulls, all public starred repos and gists (omitting "hooks", "releases" and therefore "assets" to prevent blocking). *Great for a cron job.* ::
export FINE_ACCESS_TOKEN=SOME-GITHUB-TOKEN
GH_USER=YOUR-GITHUB-USER
github-backup -f $FINE_ACCESS_TOKEN --prefer-ssh -o ~/github-backup/ -l error -P -i --all-starred --starred --watched --followers --following --issues --issue-comments --issue-events --pulls --pull-comments --pull-commits --labels --milestones --repositories --wikis --releases --assets --pull-details --gists --starred-gists $GH_USER
Debug an error/block or incomplete backup into a temporary directory. Omit "incremental" to fill a previous incomplete backup. ::
export FINE_ACCESS_TOKEN=SOME-GITHUB-TOKEN
GH_USER=YOUR-GITHUB-USER
github-backup -f $FINE_ACCESS_TOKEN -o /tmp/github-backup/ -l debug -P --all-starred --starred --watched --followers --following --issues --issue-comments --issue-events --pulls --pull-comments --pull-commits --labels --milestones --repositories --wikis --releases --assets --pull-details --gists --starred-gists $GH_USER
Development
===========
This project is considered feature complete for the primary maintainer @josegonzalez. If you would like a bugfix or enhancement, pull requests are welcome. Feel free to contact the maintainer for consulting estimates if you'd like to sponsor the work instead.
Contibuters
-----------
A huge thanks to all the contibuters!
.. image:: https://contrib.rocks/image?repo=josegonzalez/python-github-backup
:target: https://github.com/josegonzalez/python-github-backup/graphs/contributors
:alt: contributors
Testing
=======
-------
This project currently contains no unit tests. To run linting::

View File

@@ -2,38 +2,46 @@
import os, sys, logging
from github_backup.github_backup import (
backup_account,
backup_repositories,
check_git_lfs_install,
filter_repositories,
get_authenticated_user,
log_info,
log_warning,
mkdir_p,
parse_args,
retrieve_repositories,
)
logging.basicConfig(
format='%(asctime)s.%(msecs)03d: %(message)s',
datefmt='%Y-%m-%dT%H:%M:%S',
level=logging.INFO
)
from github_backup.github_backup import (
backup_account,
backup_repositories,
check_git_lfs_install,
filter_repositories,
get_authenticated_user,
logger,
mkdir_p,
parse_args,
retrieve_repositories,
)
def main():
args = parse_args()
if args.quiet:
logger.setLevel(logging.WARNING)
output_directory = os.path.realpath(args.output_directory)
if not os.path.isdir(output_directory):
log_info('Create output directory {0}'.format(output_directory))
logger.info('Create output directory {0}'.format(output_directory))
mkdir_p(output_directory)
if args.lfs_clone:
check_git_lfs_install()
if args.log_level:
log_level = logging.getLevelName(args.log_level.upper())
if isinstance(log_level, int):
logger.root.setLevel(log_level)
if not args.as_app:
log_info('Backing up user {0} to {1}'.format(args.user, output_directory))
logger.info('Backing up user {0} to {1}'.format(args.user, output_directory))
authenticated_user = get_authenticated_user(args)
else:
authenticated_user = {'login': None}
@@ -48,5 +56,5 @@ if __name__ == '__main__':
try:
main()
except Exception as e:
log_warning(str(e))
logger.error(str(e))
sys.exit(1)

View File

@@ -1 +1 @@
__version__ = '0.40.2'
__version__ = "0.44.0"

File diff suppressed because it is too large Load Diff

62
release
View File

@@ -1,12 +1,13 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $RELEASE_TRACE ]] && set -x
set -eo pipefail
[[ $RELEASE_TRACE ]] && set -x
if [[ ! -f setup.py ]]; then
echo -e "${RED}WARNING: Missing setup.py${COLOR_OFF}\n"
exit 1
fi
PACKAGE_NAME="$(cat setup.py | grep "name='" | head | cut -d "'" -f2)"
PACKAGE_NAME="$(cat setup.py | grep 'name="' | head | cut -d '"' -f2)"
INIT_PACKAGE_NAME="$(echo "${PACKAGE_NAME//-/_}")"
PUBLIC="true"
@@ -19,19 +20,19 @@ MAGENTA="\033[0;35m" # magenta
CYAN="\033[0;36m" # cyan
# ensure wheel is available
pip install wheel > /dev/null
pip install wheel >/dev/null
command -v gitchangelog >/dev/null 2>&1 || {
echo -e "${RED}WARNING: Missing gitchangelog binary, please run: pip install gitchangelog==3.0.4${COLOR_OFF}\n"
exit 1
}
command -v rst-lint > /dev/null || {
command -v rst-lint >/dev/null || {
echo -e "${RED}WARNING: Missing rst-lint binary, please run: pip install restructuredtext_lint${COLOR_OFF}\n"
exit 1
}
command -v twine > /dev/null || {
command -v twine >/dev/null || {
echo -e "${RED}WARNING: Missing twine binary, please run: pip install twine==3.2.0${COLOR_OFF}\n"
exit 1
}
@@ -43,33 +44,33 @@ fi
echo -e "\n${GREEN}STARTING RELEASE PROCESS${COLOR_OFF}\n"
set +e;
git status | grep -Eo "working (directory|tree) clean" &> /dev/null
set +e
git status | grep -Eo "working (directory|tree) clean" &>/dev/null
if [ ! $? -eq 0 ]; then # working directory is NOT clean
echo -e "${RED}WARNING: You have uncomitted changes, you may have forgotten something${COLOR_OFF}\n"
exit 1
fi
set -e;
set -e
echo -e "${YELLOW}--->${COLOR_OFF} Updating local copy"
git pull -q origin master
echo -e "${YELLOW}--->${COLOR_OFF} Retrieving release versions"
current_version=$(cat ${INIT_PACKAGE_NAME}/__init__.py |grep '__version__ ='|sed 's/[^0-9.]//g')
current_version=$(cat ${INIT_PACKAGE_NAME}/__init__.py | grep '__version__ =' | sed 's/[^0-9.]//g')
major=$(echo $current_version | awk '{split($0,a,"."); print a[1]}')
minor=$(echo $current_version | awk '{split($0,a,"."); print a[2]}')
patch=$(echo $current_version | awk '{split($0,a,"."); print a[3]}')
if [[ "$@" == "major" ]]; then
major=$(($major + 1));
major=$(($major + 1))
minor="0"
patch="0"
elif [[ "$@" == "minor" ]]; then
minor=$(($minor + 1));
minor=$(($minor + 1))
patch="0"
elif [[ "$@" == "patch" ]]; then
patch=$(($patch + 1));
patch=$(($patch + 1))
fi
next_version="${major}.${minor}.${patch}"
@@ -77,7 +78,7 @@ next_version="${major}.${minor}.${patch}"
echo -e "${YELLOW} >${COLOR_OFF} ${MAGENTA}${current_version}${COLOR_OFF} -> ${MAGENTA}${next_version}${COLOR_OFF}"
echo -e "${YELLOW}--->${COLOR_OFF} Ensuring readme passes lint checks (if this fails, run rst-lint)"
rst-lint README.rst > /dev/null
rst-lint README.rst || exit 1
echo -e "${YELLOW}--->${COLOR_OFF} Creating necessary temp file"
tempfoo=$(basename $0)
@@ -86,33 +87,29 @@ TMPFILE=$(mktemp /tmp/${tempfoo}.XXXXXX) || {
exit 1
}
find_this="__version__ = '$current_version'"
replace_with="__version__ = '$next_version'"
find_this="__version__ = \"$current_version\""
replace_with="__version__ = \"$next_version\""
echo -e "${YELLOW}--->${COLOR_OFF} Updating ${INIT_PACKAGE_NAME}/__init__.py"
sed "s/$find_this/$replace_with/" ${INIT_PACKAGE_NAME}/__init__.py > $TMPFILE && mv $TMPFILE ${INIT_PACKAGE_NAME}/__init__.py
find_this="${PACKAGE_NAME}.git@$current_version"
replace_with="${PACKAGE_NAME}.git@$next_version"
echo -e "${YELLOW}--->${COLOR_OFF} Updating README.rst"
sed "s/$find_this/$replace_with/" README.rst > $TMPFILE && mv $TMPFILE README.rst
sed "s/$find_this/$replace_with/" ${INIT_PACKAGE_NAME}/__init__.py >$TMPFILE && mv $TMPFILE ${INIT_PACKAGE_NAME}/__init__.py
if [ -f docs/conf.py ]; then
echo -e "${YELLOW}--->${COLOR_OFF} Updating docs"
find_this="version = '${current_version}'"
replace_with="version = '${next_version}'"
sed "s/$find_this/$replace_with/" docs/conf.py > $TMPFILE && mv $TMPFILE docs/conf.py
sed "s/$find_this/$replace_with/" docs/conf.py >$TMPFILE && mv $TMPFILE docs/conf.py
find_this="version = '${current_version}'"
replace_with="release = '${next_version}'"
sed "s/$find_this/$replace_with/" docs/conf.py > $TMPFILE && mv $TMPFILE docs/conf.py
sed "s/$find_this/$replace_with/" docs/conf.py >$TMPFILE && mv $TMPFILE docs/conf.py
fi
echo -e "${YELLOW}--->${COLOR_OFF} Updating CHANGES.rst for new release"
version_header="$next_version ($(date +%F))"
set +e; dashes=$(yes '-'|head -n ${#version_header}|tr -d '\n') ; set -e
gitchangelog |sed "4s/.*/$version_header/"|sed "5s/.*/$dashes/" > $TMPFILE && mv $TMPFILE CHANGES.rst
set +e
dashes=$(yes '-' | head -n ${#version_header} | tr -d '\n')
set -e
gitchangelog | sed "4s/.*/$version_header/" | sed "5s/.*/$dashes/" >$TMPFILE && mv $TMPFILE CHANGES.rst
echo -e "${YELLOW}--->${COLOR_OFF} Adding changed files to git"
git add CHANGES.rst README.rst ${INIT_PACKAGE_NAME}/__init__.py
@@ -121,6 +118,15 @@ if [ -f docs/conf.py ]; then git add docs/conf.py; fi
echo -e "${YELLOW}--->${COLOR_OFF} Creating release"
git commit -q -m "Release version $next_version"
if [[ "$PUBLIC" == "true" ]]; then
echo -e "${YELLOW}--->${COLOR_OFF} Creating python release files"
cp README.rst README
python setup.py sdist bdist_wheel >/dev/null
echo -e "${YELLOW}--->${COLOR_OFF} Validating long_description"
twine check dist/*
fi
echo -e "${YELLOW}--->${COLOR_OFF} Tagging release"
git tag -a $next_version -m "Release version $next_version"
@@ -128,9 +134,7 @@ echo -e "${YELLOW}--->${COLOR_OFF} Pushing release and tags to github"
git push -q origin master && git push -q --tags
if [[ "$PUBLIC" == "true" ]]; then
echo -e "${YELLOW}--->${COLOR_OFF} Creating python release"
cp README.rst README
python setup.py sdist bdist_wheel > /dev/null
echo -e "${YELLOW}--->${COLOR_OFF} Uploading python release"
twine upload dist/*
rm README
fi

31
release-requirements.txt Normal file
View File

@@ -0,0 +1,31 @@
bleach==6.0.0
certifi==2023.7.22
charset-normalizer==3.1.0
colorama==0.4.6
docutils==0.20.1
flake8==6.0.0
gitchangelog==3.0.4
idna==3.4
importlib-metadata==6.6.0
jaraco.classes==3.2.3
keyring==23.13.1
markdown-it-py==2.2.0
mccabe==0.7.0
mdurl==0.1.2
more-itertools==9.1.0
pkginfo==1.9.6
pycodestyle==2.10.0
pyflakes==3.0.1
Pygments==2.15.1
readme-renderer==37.3
requests==2.31.0
requests-toolbelt==1.0.0
restructuredtext-lint==1.4.0
rfc3986==2.0.0
rich==13.3.5
six==1.16.0
tqdm==4.65.0
twine==4.0.2
urllib3==2.0.7
webencodings==0.5.1
zipp==3.15.0

View File

@@ -5,6 +5,7 @@ from github_backup import __version__
try:
from setuptools import setup
setup # workaround for pyflakes issue #13
except ImportError:
from distutils.core import setup
@@ -15,6 +16,7 @@ except ImportError:
# http://www.eby-sarna.com/pipermail/peak/2010-May/003357.html)
try:
import multiprocessing
multiprocessing
except ImportError:
pass
@@ -25,26 +27,26 @@ def open_file(fname):
setup(
name='github-backup',
name="github-backup",
version=__version__,
author='Jose Diaz-Gonzalez',
author_email='github-backup@josediazgonzalez.com',
packages=['github_backup'],
scripts=['bin/github-backup'],
url='http://github.com/josegonzalez/python-github-backup',
license='MIT',
author="Jose Diaz-Gonzalez",
author_email="github-backup@josediazgonzalez.com",
packages=["github_backup"],
scripts=["bin/github-backup"],
url="http://github.com/josegonzalez/python-github-backup",
license="MIT",
classifiers=[
'Development Status :: 5 - Production/Stable',
'Topic :: System :: Archiving :: Backup',
'License :: OSI Approved :: MIT License',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
"Development Status :: 5 - Production/Stable",
"Topic :: System :: Archiving :: Backup",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
],
description='backup a github user or organization',
long_description=open_file('README.rst').read(),
long_description_content_type='text/x-rst',
install_requires=open_file('requirements.txt').readlines(),
description="backup a github user or organization",
long_description=open_file("README.rst").read(),
long_description_content_type="text/x-rst",
install_requires=open_file("requirements.txt").readlines(),
zip_safe=True,
)