josegonzalez / python-github-backup

backup a github user or organization
MIT License
1.3k stars 235 forks source link

Backup of private organization does nothing, no errors #72

Open mtdeguzis opened 6 years ago

mtdeguzis commented 6 years ago
github-backup <NAME> --private --organization --output-directory ~/gitbak --all

Retrieving repositories
Filtering repositories
Backing up repositories
Retrieving <NAME> starred repositories
Writing 0 starred repositories to disk
Retrieving <NAME> watched repositories
Writing 0 watched repositories to disk

$ tree ~/gitbak/
/home/user/gitbak/
└── account
    ├── starred.json
    └── watched.json

1 directory, 2 files

I would also be nice to have a --debug option for additional output of what is going on. I can clone our repos via ssh just fine. leaving out the ssh option did not make a difference.

mtdeguzis commented 6 years ago

I started adding some logging info to debug this, turns out the request returns back an empty list, []. Turns out -u is required, but not checked for. Which then prompts for a password, which it should not if I issued to prefer ssh

bin/github-backup -u user <NAME>--prefer-ssh --private --organization --output-directory ~/gitbak --all
Backing up user <NAME> to /home/user/gitbak
Retrieving repositories
Password:

If -u is left out, getpasswd should be used to obtain the current user.

mtdeguzis commented 6 years ago

Ok works with a token, all of which these things should be checked for at runtime. Is there no other way?

josegonzalez commented 6 years ago

@mtdeguzis If you set --user, you probably also want to set --password (its for basic auth). The alternative is to use a token, as you found. getpasswd isnt a good alternative here because your local username probably does not match your github username (mine doesn't).

I suppose if we set the --private flag, we should also check for auth. Mind making a pull request for that?

mtdeguzis commented 6 years ago

I could probably take a look at add the check. I'll look at submitting a PR.

mtdeguzis commented 6 years ago

Actually, this checks for the pw, so nothing to do here:

github-backup ORG -u mtdeguzis --prefer-ssh --private --organization --output-directory ~/gitbak --all

We actually need to check for user. If that is left out, the program kicks of as if nothing is wrong. But I get what you mean, get_auth can be issued if --private is used.

mtdeguzis commented 6 years ago

How about..

350 def retrieve_data(args, template, query_args=None, single_request=False):
351     auth = get_auth(args)
352     if not auth and args.private:
353         sys.exit("Authentication is required for private repositories")
354     query_args = get_query_args(query_args)
355     per_page = 100
356     page = 0
357     data = []

... when a user attempts to retrieve data from a private repository?

Backing up user ORG to /home/mtdeguzis/gitbak
Retrieving repositories
Authentication is required for private repositories (token or password)
breezzz commented 6 years ago

Hello! It would be nice to add authentication by the ssh key (without password)

josegonzalez commented 6 years ago

@breezzz pull request welcome.

whwright commented 5 years ago

This looks done with #74?

josegonzalez commented 5 years ago

That was never merged.

whwright commented 5 years ago

Derp, somehow missed that. Should this be implemented as a failure or a warning? I am thinking similar to this:

https://github.com/josegonzalez/python-github-backup/blob/89ee22c2be626a064533a28ca8c97534c7eef16b/bin/github-backup#L539

josegonzalez commented 5 years ago

warning is fine.