Compare commits

..

142 Commits

Author SHA1 Message Date
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
Jose Diaz-Gonzalez
9e1800f56e Release version 0.40.2 2021-12-29 12:49:10 -05:00
Jose Diaz-Gonzalez
d057ee0d04 Merge pull request #186 from atinary-afoulon/patch-1
Fix lint issues raised by Flake8
2021-12-29 12:48:30 -05:00
atinary-afoulon
64562f2460 Fix lint issues raised by Flake8
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
2021-12-13 14:33:21 +01:00
Jose Diaz-Gonzalez
f7f9ffd017 Release version 0.40.1 2021-09-22 12:29:08 -04:00
Jose Diaz-Gonzalez
048ef04e2a Merge pull request #180 from whwright/revert-to-fetch
Revert to fetch
2021-09-22 11:06:18 -04:00
Harrison Wright
b1acfed83a Revert to fetch 2021-07-14 10:53:14 -05:00
Jose Diaz-Gonzalez
18e78a4d66 Release version 0.40.0 2021-07-12 00:44:33 -04:00
Jose Diaz-Gonzalez
1ed5427043 Merge pull request #177 from jacekn/retry
Add retry on certain network errors
2021-07-12 00:43:19 -04:00
Jose Diaz-Gonzalez
c2e3665ed8 Merge pull request #178 from pew/patch-1
pull changes from remote
2021-07-12 00:43:10 -04:00
Jonas
0a30a92fe4 pull changes from remote
use `git pull` to pull actual files from the remote instead of using `fetch` for only the metadata
2021-07-06 06:21:06 +02:00
Jacek Nykis
cc52587f52 Add retry on certain network errors
This change includes certain network level errors in the retry logic.
It partially address #110 but I think more comprehensive fix would be useful.
2021-07-01 14:39:10 +01:00
Jose Diaz-Gonzalez
853b7c46a1 Release version 0.39.0 2021-03-18 23:16:04 -04:00
Jose Diaz-Gonzalez
e23d12d490 Merge pull request #173 from gallofeliz/make-compatible-python-call
Try to make compatible code with direct Python call ; reduce the hard link of the code with the cli
2021-03-18 22:51:01 -04:00
Jose Diaz-Gonzalez
f8e1151111 Merge pull request #174 from atorrescogollo/master
Fixed release_name with slash bug
2021-03-18 22:50:21 -04:00
Álvaro Torres Cogollo
664c2a765e Fixed release_name with slash bug 2021-03-03 11:36:44 +01:00
Gallo Feliz
fa7148d38f fix: fix missing INFO logs 2021-02-16 13:25:16 +01:00
Gallo Feliz
480ce3ce2a Try to make compatible code with direct Python call ; reduce the hard link of the code with the cli 2021-02-16 13:13:51 +01:00
Jose Diaz-Gonzalez
943e84e3d9 Release version 0.38.0 2021-02-13 03:55:02 -05:00
Jose Diaz-Gonzalez
0c924c3158 Merge pull request #172 from samanthaq/always-use-oauth-when-provided
fix: Always clone with OAuth token when provided
2021-02-13 03:53:26 -05:00
Samantha Baldwin
f62c4eaf8b fix: Always clone with OAuth token when provided
Github Enterprise servers with 'Anonymous Git read access' disabled
cause `git ls-remote` to fail (128) for a repo's `clone_url`. Using the
OAuth token when provided allows cloning private AND public repos when
Anonymous Git read access is disabled.
2021-02-12 00:46:06 -05:00
Jose Diaz-Gonzalez
a53d7f6849 Merge pull request #170 from Mindavi/bugfix/broken-url
Fix broken and incorrect link to github repository
2021-01-18 00:12:09 -05:00
Rick van Schijndel
4e571d0735 Change broken link to a fork to a working link to upstream 2021-01-03 23:08:58 +01:00
Jose Diaz-Gonzalez
5a71bc5e5a Release version 0.37.2 2021-01-01 21:31:06 -05:00
Jose Diaz-Gonzalez
794ccf3996 fix: use distutils.core on error 2021-01-01 21:30:54 -05:00
Jose Diaz-Gonzalez
977424c153 Release version 0.37.1 2021-01-01 21:28:25 -05:00
Jose Diaz-Gonzalez
613576dd25 fix: use twine for releases
The old method of releasing to pypi broke for whatever reason and switching to a supported toolchain is easier than debugging the old one.

Additionally:

- Update gitchangelog
- Fix license entry
- Set long description type
- Gitignore the temporary readme file
2021-01-01 21:28:03 -05:00
Jose Diaz-Gonzalez
638bf7a77e Release version 0.37.0 2021-01-01 21:23:49 -05:00
Jose Diaz-Gonzalez
725f2c3b8f Merge pull request #158 from albertyw/python3
Remove support for python 2
2021-01-01 21:22:30 -05:00
Jose Diaz-Gonzalez
41ece08152 Merge pull request #165 from garymoon/add-skip-archived
Add option to skip archived repositories
2021-01-01 21:22:15 -05:00
Gary Moon
3a5ef5158d Add ability to skip archived repositories 2020-10-30 15:39:32 -04:00
Albert Wang
cb1b0b6c6b Add support for python 3.7 and 3.8 in package classifiers 2020-08-28 23:45:30 -07:00
Albert Wang
d7f0747432 Remove support for python 2.7 in package classifiers 2020-08-28 23:45:30 -07:00
Albert Wang
d411e20580 Remove python 2 specific import logic 2020-08-28 23:45:30 -07:00
Albert Wang
d7b85264cd Remove python 2 specific logic 2020-08-28 23:45:30 -07:00
Jose Diaz-Gonzalez
031a984434 Release version 0.36.0 2020-08-29 02:37:48 -04:00
Jose Diaz-Gonzalez
9e16f39e3e Merge pull request #157 from albertyw/lint 2020-08-29 02:37:19 -04:00
Albert Wang
2de96390be Add flake8 instructions to readme 2020-08-28 23:13:24 -07:00
Albert Wang
78cff47a91 Fix regex string 2020-08-28 23:13:24 -07:00
Albert Wang
fa27988c1c Update boolean check 2020-08-28 23:13:23 -07:00
Albert Wang
bb2e2b8c6f Fix whitespace issues 2020-08-28 23:13:23 -07:00
Albert Wang
8fd0f2b64f Do not use bare excepts 2020-08-28 23:13:23 -07:00
Jose Diaz-Gonzalez
753a551961 Merge pull request #161 from albertyw/circleci-project-setup
Add circleci config
2020-08-29 01:48:49 -04:00
Albert Wang
607b6ca69b Add .circleci/config.yml 2020-08-28 02:33:51 -07:00
Jose Diaz-Gonzalez
ef71655b01 Merge pull request #160 from wbolster/patch-1
Include --private flag in example
2020-08-27 13:23:28 -04:00
wouter bolsterlee
d8bcbfa644 Include --private flag in example
By default, private repositories are not included. This is surprising.
It took me a while to figure this out, and making that clear in the
example can help others to be aware of that.
2020-08-27 17:01:56 +02:00
Jose Diaz-Gonzalez
751b0d6e82 Release version 0.35.0 2020-08-05 12:02:21 -04:00
Jose Diaz-Gonzalez
ea633ca2bb Merge pull request #156 from samanthaq/restore-optional-throttling
Make API request throttling optional
2020-08-05 12:01:56 -04:00
Samantha Baldwin
a2115ce3e5 Make API request throttling optional 2020-08-05 11:53:17 -04:00
Jose Diaz-Gonzalez
8a00bb1903 Release version 0.34.0 2020-07-24 13:31:03 -04:00
Jose Diaz-Gonzalez
e53f8d4724 Merge pull request #153 from 0x6d617474/gist_ssh
Add logic for transforming gist repository urls to ssh
2020-07-24 13:30:40 -04:00
Matt Fields
356f5f674b Add logic for transforming gist repository urls to ssh 2020-07-07 17:54:16 -04:00
Jose Diaz-Gonzalez
13128635cb Release version 0.33.1 2020-05-28 16:44:40 -04:00
Jose Diaz-Gonzalez
6e6842b025 Merge pull request #151 from garymoon/readme-update-0.33 2020-05-28 16:43:57 -04:00
Gary Moon
272177c395 Update the readme for new switches added in 0.33 2020-05-26 19:59:47 -04:00
Jose Diaz-Gonzalez
70f711ea68 Release version 0.33.0 2020-04-13 17:14:20 -04:00
Jose Diaz-Gonzalez
3fc9957aac Merge pull request #149 from eht16/simple_api_request_throttling
Add basic API request throttling
2020-04-13 17:13:58 -04:00
Enrico Tröger
78098aae23 Add basic API request throttling
A simple approach to throttle API requests and so keep within the rate
limits of the API. Can be enabled with "--throttle-limit" to specify
when throttling should start.
"--throttle-pause" defines the time to sleep between further API
requests.
2020-04-13 23:06:09 +02:00
Jose Diaz-Gonzalez
fb7cc5ed53 Release version 0.32.0 2020-04-13 17:02:59 -04:00
Jose Diaz-Gonzalez
c0679b9cc3 Merge pull request #148 from eht16/logging_with_timestamp
Add timestamp to log messages
2020-04-13 16:38:36 -04:00
Enrico Tröger
03b9d1b2d8 Add timestamp to log messages 2020-04-13 22:11:48 +02:00
Jose Diaz-Gonzalez
5025f69878 Merge pull request #147 from tomhoover/update-readme
Update README.rst to match 'github-backup -h'
2020-03-24 11:17:44 -04:00
Tom Hoover
a351cdc103 Update README.rst to match 'github-backup -h' 2020-03-22 08:48:50 -05:00
Jose Diaz-Gonzalez
85e4399408 Release version 0.31.0 2020-02-25 14:41:22 -05:00
Jose Diaz-Gonzalez
c8171b692a Merge pull request #146 from timm3/upstream-123
Authenticate as Github App
2020-02-25 14:39:27 -05:00
ethan
523c811cc6 #123 update: changed --as-app 'help' description 2020-02-25 13:13:20 -06:00
ethan
857ad0afab #123: Support Authenticating As Github Application 2020-02-25 12:35:24 -06:00
Jose Diaz-Gonzalez
3f65eadee1 Release version 0.30.0 2020-02-14 12:01:05 -05:00
Jose Diaz-Gonzalez
a8e8841b26 Release version 0.29.0 2020-02-14 12:00:07 -05:00
Jose Diaz-Gonzalez
8e542fd6b6 Merge pull request #145 from timm3/50-v0.28.0
#50 - refactor for friendlier import
2020-02-14 11:57:39 -05:00
ethan
1865941b14 #50 update: keep main() in bin 2020-02-12 18:27:58 -06:00
ethan
03c68561a5 #50 - refactor for friendlier import 2020-02-10 17:22:21 -06:00
Jose Diaz-Gonzalez
196acd0aca Release version 0.28.0 2020-02-03 11:41:34 -05:00
Jose Diaz-Gonzalez
679ac841f6 Merge pull request #143 from smiley/patch-1
Remove deprecated (and removed) "git lfs fetch" flags
2020-02-03 11:41:10 -05:00
Jose Diaz-Gonzalez
498d9eba32 Release version 0.27.0 2020-01-21 21:29:44 -05:00
Jose Diaz-Gonzalez
0f82b1717c Merge pull request #142 from einsteinx2/issue/141-import-error-version
Fixed script fails if not installed from pip
2020-01-21 21:28:22 -05:00
Ben Baron
4d5126f303 Fixed script fails if not installed from pip
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.

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
2020-01-21 21:15:57 -05:00
smiley
b864218b44 Remove deprecated (and removed) git lfs flags
"--tags" and "--force" were removed at some point from "git lfs fetch". This broke our backup script.
2020-01-20 15:40:52 +02:00
Jose Diaz-Gonzalez
98919c82c9 Merge pull request #136 from einsteinx2/issue/88-macos-keychain-broken-python3
Fixed macOS keychain access when using Python 3
2020-01-07 11:44:36 -05:00
Jose Diaz-Gonzalez
045eacbf18 Merge pull request #137 from einsteinx2/issue/134-only-use-auth-token-when-needed
Public repos no longer include the auth token
2020-01-07 11:44:23 -05:00
Jose Diaz-Gonzalez
7a234ba7ed Merge pull request #130 from einsteinx2/issue/129-fix-crash-on-release-asset-download-error
Crash when an release asset doesn't exist
2020-01-07 11:44:00 -05:00
Ben Baron
e8a255b450 Public repos no longer include the auth token
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.
2020-01-06 21:25:54 -05:00
Ben Baron
81a2f762da Fixed macOS keychain access when using Python 3
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.
2020-01-06 21:10:50 -05:00
Ben Baron
cb0293cbe5 Fixed comment typo 2020-01-06 14:15:41 -05:00
Jose Diaz-Gonzalez
252c25461f Merge pull request #132 from einsteinx2/issue/126-prevent-overwriting-release-assets
Separate release assets and skip re-downloading
2020-01-06 13:12:33 -05:00
Jose Diaz-Gonzalez
e8ed03fd06 Merge pull request #131 from einsteinx2/improve-gitignore
Improved gitignore, macOS files and IDE configs
2020-01-06 13:11:06 -05:00
Ben Baron
38010d7c39 Switched log_info to log_warning in download_file 2020-01-06 13:06:22 -05:00
Ben Baron
71b4288e6b Added newline to end of file 2020-01-06 13:04:40 -05:00
Ben Baron
ba4fa9fa2d Moved asset downloading loop inside the if block 2020-01-06 12:50:33 -05:00
Ben Baron
869f761c90 Separate release assets and skip re-downloading
Currently the script puts all release assets into the same folder called `releases`. So any time 2 release files have the same name, only the last one downloaded is actually saved. A particularly bad example of this is MacDownApp/macdown where all of their releases are named `MacDown.app.zip`. So even though they have 36 releases and all 36 are downloaded, only the last one is actually saved.

With this change, each releases' assets are now stored in a fubfolder inside `releases` named after the release name. There could still be edge cases if two releases have the same name, but this is still much safer tha the previous behavior.

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
2020-01-06 12:40:47 -05:00
Ben Baron
195e700128 Improved gitignore, macOS files and IDE configs
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).
2020-01-06 11:26:06 -05:00
Ben Baron
27441b71b6 Crash when an release asset doesn't exist
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
2020-01-06 11:13:25 -05:00
Jose Diaz-Gonzalez
cfeaee7309 Update ISSUE_TEMPLATE.md 2020-01-06 10:20:07 -05:00
Jose Diaz-Gonzalez
fac8e4274f Release version 0.26.0 2019-09-23 11:45:01 -04:00
Jose Diaz-Gonzalez
17fee66f31 Merge pull request #128 from Snawoot/master
Workaround gist clone in `--prefer-ssh` mode
2019-09-23 11:44:21 -04:00
Vladislav Yarmak
a56d27dd8b workaround gist clone in --prefer-ssh mode 2019-09-21 19:22:27 +03:00
Jose Diaz-Gonzalez
e57873b6dd Create PULL_REQUEST.md 2019-08-14 17:51:19 -04:00
Jose Diaz-Gonzalez
2658b039a1 Create ISSUE_TEMPLATE.md 2019-08-14 17:47:47 -04:00
Jose Diaz-Gonzalez
fd684a71fb Update README.rst 2019-07-11 13:40:25 -07:00
Jose Diaz-Gonzalez
bacd77030b Update README.rst 2019-07-11 13:39:41 -07:00
Jose Diaz-Gonzalez
b73079daf2 Release version 0.25.0 2019-07-03 17:46:12 -04:00
Jose Diaz-Gonzalez
eca8a70666 Merge pull request #120 from 8h2a/patch-1
Issue 119: Change retrieve_data to be a generator
2019-07-03 17:45:40 -04:00
2a
e74765ba7f Issue 119: Change retrieve_data to be a generator
See issue #119.
2019-07-03 23:01:00 +02:00
Jose Diaz-Gonzalez
6db5bd731b Release version 0.24.0 2019-06-27 11:24:43 -04:00
Jose Diaz-Gonzalez
7305871c20 Merge pull request #117 from QuicketSolutions/master
Add option for Releases
2019-06-27 11:15:02 -04:00
Ethan Timm
baf7b1a9b4 Merge pull request #5 from QuicketSolutions/QKT-45
QKT-45: include assets - update readme
2019-06-25 15:41:11 -05:00
Ethan Timm
121fa68294 QKT-45: include assets - update readme
update readme with flag information for including assets alongside their respective releases
2019-06-25 15:41:02 -05:00
Ethan Timm
44dfc79edc Merge pull request #4 from whwright/wip-releases
Download github assets
2019-06-25 15:35:39 -05:00
Harrison Wright
89f59cc7a2 Make assets it's own flag 2019-06-24 15:49:19 -05:00
Jose Diaz-Gonzalez
ad8c5b8768 Merge pull request #118 from whwright/115-fix-pull-details
Fix pull details
2019-06-24 14:51:10 -04:00
Harrison Wright
921aab3729 Fix pull details 2019-06-22 13:19:45 -05:00
Harrison Wright
ea4c3d0f6f Fix super call for python2 2019-06-22 13:05:54 -05:00
Harrison Wright
9b6400932d Fix redirect to s3 2019-06-22 13:00:42 -05:00
Harrison Wright
de0c3f46c6 WIP: download assets 2019-06-21 20:03:14 -05:00
Ethan Timm
73b069f872 Merge pull request #3 from QuicketSolutions/QKT-42
QKT-42: releases - add readme info
2019-06-21 16:54:28 -05:00
ethan
3d3f512074 QKT-42: releases - add readme info 2019-06-21 16:53:40 -05:00
Ethan Timm
1c3078992d Merge pull request #2 from QuicketSolutions/QKT-42
QKT-42 update: shorter command flag
2019-06-21 16:49:40 -05:00
ethan
4b40ae94d7 QKT-42 update: shorter command flag 2019-06-21 16:48:25 -05:00
Ethan Timm
a18fda9faf Merge pull request #1 from QuicketSolutions/QKT-42
QKT-42: support saving release information
2019-06-21 16:43:48 -05:00
ethan
41130fc8b0 QKT-42: support saving release information 2019-06-21 11:20:32 -05:00
Jose Diaz-Gonzalez
2340a02fc6 Release version 0.23.0 2019-06-04 14:43:32 -04:00
Jose Diaz-Gonzalez
cafff4ae80 Merge pull request #113 from kleag/master
Avoid to crash in case of HTTP 502 error
2019-06-04 14:43:10 -04:00
Gael de Chalendar
3193d120e5 Avoid to crash in case of HTTP 502 error
Survive also on socket.error connections like on HTTPError or URLError.

This should solve issue #110.
2019-06-04 18:53:58 +02:00
Jose Diaz-Gonzalez
da4b29a2d6 Release version 0.22.2 2019-02-21 15:41:11 -05:00
Jose Diaz-Gonzalez
d05c96ecef Merge pull request #107 from josegonzalez/patch-1
fix: warn instead of error
2019-02-21 15:40:59 -05:00
Jose Diaz-Gonzalez
c86163bfe6 fix: warn instead of error
Refs #106
2019-02-21 15:40:39 -05:00
Jose Diaz-Gonzalez
eff6e36974 Release version 0.22.1 2019-02-21 15:13:31 -05:00
Jose Diaz-Gonzalez
63e458bafb Merge pull request #106 from jstetic/master
Log URL error
2019-02-21 15:13:02 -05:00
JOHN STETIC
57ab5ce1a2 Log URL error https://github.com/josegonzalez/python-github-backup/issues/105 2019-02-20 20:43:00 -05:00
Jose Diaz-Gonzalez
d148f9b900 Release version 0.22.0 2019-02-01 09:50:42 -05:00
Jose Diaz-Gonzalez
89ee22c2be Merge pull request #103 from whwright/98-better-logging
Fix accidental system exit with better logging strategy
2018-12-27 15:12:26 -05:00
W. Harrison Wright
9e472b74e6 Remove unnecessary sys.exit call 2018-12-27 13:07:13 -06:00
W. Harrison Wright
4b459f9af8 Add org check to avoid incorrect log output 2018-12-27 12:58:57 -06:00
W. Harrison Wright
b70ea87db7 Fix accidental system exit with better logging strategy 2018-12-27 12:53:21 -06:00
Jose Diaz-Gonzalez
f8be34562b Release version 0.21.1 2018-12-25 06:28:28 -05:00
Jose Diaz-Gonzalez
ec05204aa9 Merge pull request #101 from ecki/patch-2
Mark options which are not included in --all
2018-12-25 06:27:58 -05:00
Bernd
628f2cbf73 Mark options which are not included in --all
As discussed in Issue #100
2018-12-24 04:19:29 +01:00
Jose Diaz-Gonzalez
38bf438d2f Release version 0.21.0 2018-11-28 01:59:03 -05:00
Jose Diaz-Gonzalez
899cf42b57 Merge pull request #97 from whwright/94-fix-user-repos
Correctly download repos when user arg != authenticated user
2018-11-28 01:58:37 -05:00
W. Harrison Wright
b5972aaaf0 Correctly download repos when user arg != authenticated user 2018-11-11 19:40:46 -06:00
11 changed files with 1949 additions and 1052 deletions

23
.circleci/config.yml Normal file
View File

@@ -0,0 +1,23 @@
version: 2.1
orbs:
python: circleci/python@0.3.2
jobs:
build-and-test:
executor: python/default
steps:
- checkout
- python/load-cache
- run:
command: pip install flake8
name: Install dependencies
- python/save-cache
- run:
command: flake8 --ignore=E501
name: Lint
workflows:
main:
jobs:
- build-and-test

10
.gitignore vendored
View File

@@ -25,3 +25,13 @@ doc/_build
# Generated man page
doc/aws_hostname.1
# Annoying macOS files
.DS_Store
._*
# IDE configuration files
.vscode
.atom
README

View File

@@ -1,43 +1,478 @@
Changelog
=========
0.20.1 (2018-09-29)
0.39.0 (2021-03-18)
-------------------
------------
Fix
~~~
- Fix missing INFO logs. [Gallo Feliz]
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]
0.38.0 (2021-02-13)
-------------------
- Clone the specified user's gists, not the authenticated user. [W.
Fix
~~~
- Always clone with OAuth token when provided. [Samantha Baldwin]
Github Enterprise servers with 'Anonymous Git read access' disabled
cause `git ls-remote` to fail (128) for a repo's `clone_url`. Using the
OAuth token when provided allows cloning private AND public repos when
Anonymous Git read access is disabled.
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]
0.37.2 (2021-01-02)
-------------------
Fix
~~~
- Use distutils.core on error. [Jose Diaz-Gonzalez]
Other
~~~~~
- Release version 0.37.2. [Jose Diaz-Gonzalez]
0.37.1 (2021-01-02)
-------------------
Fix
~~~
- Use twine for releases. [Jose Diaz-Gonzalez]
The old method of releasing to pypi broke for whatever reason and switching to a supported toolchain is easier than debugging the old one.
Additionally:
- Update gitchangelog
- Fix license entry
- 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.
It took me a while to figure this out, and making that clear in the
example can help others to be aware of that.
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
limits of the API. Can be enabled with "--throttle-limit" to specify
when throttling should start.
"--throttle-pause" defines the time to sleep between further API
requests.
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.
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.
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]
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]
Currently the script puts all release assets into the same folder called `releases`. So any time 2 release files have the same name, only the last one downloaded is actually saved. A particularly bad example of this is MacDownApp/macdown where all of their releases are named `MacDown.app.zip`. So even though they have 36 releases and all 36 are downloaded, only the last one is actually saved.
With this change, each releases' assets are now stored in a fubfolder inside `releases` named after the release name. There could still be edge cases if two releases have the same name, but this is still much safer tha the previous behavior.
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.
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.
This should solve issue #110.
0.22.2 (2019-02-21)
-------------------
Fix
~~~
- Warn instead of error. [Jose Diaz-Gonzalez]
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
Wright]
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
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.
[W. Harrison Wright]
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]
0.19.2 (2018-03-24)
-------------------
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]
@@ -48,66 +483,115 @@ Fix
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]
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]
Ref: https://github.com/josegonzalez/python-github-backup/issues/69
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.
@@ -116,8 +600,6 @@ Fix
error message rather than a "No password item matching the
provided name and account could be found in the osx keychain"
error message
- Add support for storing PAT in OSX keychain. [Martin O'Reilly]
Added additional optional arguments and README guidance for storing
@@ -127,62 +609,87 @@ Fix
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]
0.12.0 (2016-11-22)
-------------------
Fix
~~~
- Properly import version from github_backup package. [Jose Diaz-
Gonzalez]
- Support alternate git status output. [Jose Diaz-Gonzalez]
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.
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
@@ -190,8 +697,6 @@ Other
sleep. Instead of generating an explicit error we just want to
inform the user that the script is going to sleep until their rate
limit count resets.
- Fixes #29. [Jonas Michel]
The errors list was not being cleared out after resuming a backup
@@ -202,14 +707,23 @@ 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.
@@ -222,12 +736,21 @@ 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
@@ -238,43 +761,65 @@ 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]
@@ -285,40 +830,69 @@ 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
@@ -328,21 +902,24 @@ Other
Now a non-zero return code will always output a message to
stderr and will display the executed command so it can be
rerun for troubleshooting.
- Switch to using ssh_url. [Chris Adams]
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
@@ -354,8 +931,10 @@ 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
@@ -365,35 +944,25 @@ 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]
- Fix import. [Jose Diaz-Gonzalez]
- Properly name readme. [Jose Diaz-Gonzalez]
- Create MANIFEST.in. [Jose Diaz-Gonzalez]
- Create .gitignore. [Jose Diaz-Gonzalez]
- Create setup.py. [Jose Diaz-Gonzalez]
- Create requirements.txt. [Jose Diaz-Gonzalez]
- Create __init__.py. [Jose Diaz-Gonzalez]
- Create LICENSE.txt. [Jose Diaz-Gonzalez]
- Create README.md. [Jose Diaz-Gonzalez]
- Create github-backup. [Jose Diaz-Gonzalez]

13
ISSUE_TEMPLATE.md Normal file
View File

@@ -0,0 +1,13 @@
# Important notice regarding filed issues
This project already fills my needs, and as such I have no real reason to continue it's development. This project is otherwise provided as is, and no support is given.
If pull requests implementing bug fixes or enhancements are pushed, I am happy to review and merge them (time permitting).
If you wish to have a bug fixed, you have a few options:
- Fix it yourself and file a pull request.
- File a bug and hope someone else fixes it for you.
- Pay me to fix it (my rate is $200 an hour, minimum 1 hour, contact me via my [github email address](https://github.com/josegonzalez) if you want to go this route).
In all cases, feel free to file an issue, they may be of help to others in the future.

7
PULL_REQUEST.md Normal file
View File

@@ -0,0 +1,7 @@
# Important notice regarding filed pull requests
This project already fills my needs, and as such I have no real reason to continue it's development. This project is otherwise provided as is, and no support is given.
I will attempt to review pull requests at _my_ earliest convenience. If I am unable to get to your pull request in a timely fashion, it is what it is. This repository does not pay any bills, and I am not required to merge any pull request from any individual.
If you wish to jump my personal priority queue, you may pay me for my time to review. My rate is $200 an hour - minimum 1 hour - feel free contact me via my github email address if you want to go this route.

View File

@@ -4,6 +4,8 @@ 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
Requirements
@@ -27,18 +29,20 @@ Usage
CLI Usage is as follows::
github-backup [-h] [-u USERNAME] [-p PASSWORD] [-t TOKEN]
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]
[--pull-comments] [--pull-commits] [--labels] [--hooks]
[--milestones] [--repositories] [--bare] [--lfs]
[--wikis] [--gists] [--starred-gists] [--skip-existing]
[-L [LANGUAGES [LANGUAGES ...]]] [-N NAME_REGEX]
[-H GITHUB_HOST] [-O] [-R REPOSITORY] [-P] [-F]
[--prefer-ssh] [-v]
[--pull-comments] [--pull-commits] [--pull-details]
[--labels] [--hooks] [--milestones] [--repositories]
[--bare] [--lfs] [--wikis] [--gists] [--starred-gists]
[--skip-existing] [-L [LANGUAGES [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]
USER
Backup a github account
@@ -54,23 +58,25 @@ CLI Usage is as follows::
password for basic auth. If a username is given but
not a password, the password will be prompted for.
-t TOKEN, --token TOKEN
personal access or OAuth token, or path to token
(file://...)
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
-i, --incremental incremental backup
--starred include JSON output of starred repositories in backup
--all-starred include starred repositories in backup
--watched include watched repositories in backup
--all-starred include starred repositories in backup [*]
--watched include JSON output of watched repositories in backup
--followers include JSON output of followers in backup
--following include JSON output of following users in backup
--all include everything in backup
--all include everything in backup (not including [*])
--issues include issues in backup
--issue-comments include issue comments in backup
--issue-events include issue events in backup
--pulls include pull requests in backup
--pull-comments include pull request review comments in backup
--pull-commits include pull request commits in backup
--pull-details include more pull request details in backup [*]
--labels include labels in backup
--hooks include hooks in backup (works only when
authenticated)
@@ -78,10 +84,10 @@ CLI Usage is as follows::
--repositories include repository clone in backup
--bare clone bare repositories
--lfs clone LFS repositories (requires Git LFS to be
installed, https://git-lfs.github.com)
installed, https://git-lfs.github.com) [*]
--wikis include wiki clone in backup
--gists include gists in backup
--starred-gists include starred gists in backup
--gists include gists in backup [*]
--starred-gists include starred gists in backup [*]
--skip-existing skip project if a backup directory exists
-L [LANGUAGES [LANGUAGES ...]], --languages [LANGUAGES [LANGUAGES ...]]
only allow these languages
@@ -92,8 +98,8 @@ CLI Usage is as follows::
-O, --organization whether or not this is an organization user
-R REPOSITORY, --repository REPOSITORY
name of repository to limit backup to
-P, --private include private repositories
-F, --fork include forked repositories
-P, --private include private repositories [*]
-F, --fork include forked repositories [*]
--prefer-ssh Clone repositories using SSH instead of HTTPS
-v, --version show program's version number and exit
--keychain-name OSX_KEYCHAIN_ITEM_NAME
@@ -102,6 +108,17 @@ CLI Usage is as follows::
--keychain-account OSX_KEYCHAIN_ITEM_ACCOUNT
OSX ONLY: account field of password item in OSX
keychain that holds the personal access or OAuth token
--releases include release information, not including assets or
binaries
--assets include assets alongside release information; only
applies if including releases
--throttle-limit THROTTLE_LIMIT
start throttling of GitHub API requests after this
amount of API requests remain
--throttle-pause THROTTLE_PAUSE
wait this amount of seconds when API request
throttling is active (default: 30.0, requires
--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).
@@ -136,10 +153,10 @@ Instructions on how to do this can be found on https://git-lfs.github.com.
Examples
========
Backup all repositories::
Backup all repositories, including private ones::
export ACCESS_TOKEN=SOME-GITHUB-TOKEN
github-backup WhiteHouse --token $ACCESS_TOKEN --organization --output-directory /tmp/white-house --repositories
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)::
@@ -149,7 +166,16 @@ Backup a single organization repository with everything else (wiki, pull request
# e.g. git@github.com:docker/cli.git
github-backup $ORGANIZATION -P -t $ACCESS_TOKEN -o . --all -O -R $REPO
Testing
=======
This project currently contains no unit tests. To run linting::
pip install flake8
flake8 --ignore=E501
.. |PyPI| image:: https://img.shields.io/pypi/v/github-backup.svg
:target: https://pypi.python.org/pypi/github-backup/
.. |Python Versions| image:: https://img.shields.io/pypi/pyversions/github-backup.svg
:target: https://github.com/albertyw/github-backup
:target: https://github.com/josegonzalez/python-github-backup

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1 @@
__version__ = '0.20.1'
__version__ = '0.41.0'

File diff suppressed because it is too large Load Diff

10
release
View File

@@ -22,7 +22,7 @@ CYAN="\033[0;36m" # cyan
pip install wheel > /dev/null
command -v gitchangelog >/dev/null 2>&1 || {
echo -e "${RED}WARNING: Missing gitchangelog binary, please run: pip install gitchangelog==2.2.0${COLOR_OFF}\n"
echo -e "${RED}WARNING: Missing gitchangelog binary, please run: pip install gitchangelog==3.0.4${COLOR_OFF}\n"
exit 1
}
@@ -31,6 +31,11 @@ command -v rst-lint > /dev/null || {
exit 1
}
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
}
if [[ "$@" != "major" ]] && [[ "$@" != "minor" ]] && [[ "$@" != "patch" ]]; then
echo -e "${RED}WARNING: Invalid release type, must specify 'major', 'minor', or 'patch'${COLOR_OFF}\n"
exit 1
@@ -125,7 +130,8 @@ 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 upload > /dev/null
python setup.py sdist bdist_wheel > /dev/null
twine upload dist/*
rm README
fi

View File

@@ -32,17 +32,19 @@ setup(
packages=['github_backup'],
scripts=['bin/github-backup'],
url='http://github.com/josegonzalez/python-github-backup',
license=open('LICENSE.txt').read(),
license='MIT',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Topic :: System :: Archiving :: Backup',
'License :: OSI Approved :: MIT License',
'Programming Language :: Python :: 2.7',
'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(),
zip_safe=True,
)