2017-10-06 5 views
0

Je reçois fréquemment une erreur Octokit::AbuseDetected car mon application déclenche trop de demandes d'API.Octokit: add_contents sans pousser à repo

J'utilise la méthode add_contents pour ajouter chaque fichier à l'intérieur d'un répertoire spécifique à un dépôt distant: (un par un)

Dir.glob(wrapper + '/**/*') do |path| 
    octokit_client.create_contents(repo, path.sub("#{wrapper}/", ''), 'adding content', File.read(path), branch: 'master') unless File.directory?(path) 
end 

est-il un moyen de soit pousser tous les fichiers à l'intérieur d'un répertoire pour un dépôt à distance à la fois ou d'abord ajouter le contenu localement et ensuite pousser le repo?

+0

Avez-vous besoin d'utiliser la bibliothèque oktokit? Ou il sera OK de passer à l'autre bibliothèque, par exemple [ruby-git] (https://github.com/schacon/ruby-git) – Hirurg103

+0

@ Hirurg103 Eh bien, si ça ne rend pas les choses trop compliquées :-) – jonhue

Répondre

0

Vous ne savez pas si c'est possible avec la bibliothèque oktokit. Pour y parvenir avec ruby-git vous pouvez effectuer les opérations suivantes:

Dir.glob(wrapper + '/**/*') do |path| 
    next if File.directory?(path) 
    File.write path.sub("#{wrapper}/", ''), File.read(path) 
end 

g = Git.open('.') # initialize ruby git 
g.add 
g.commit('adding content') 
g.push 

Vous n'avez pas besoin d'authentifier avec ruby-git dans le code source. Vous devez configurer les clés ssh - lire Generating a new SSH key and adding it to the ssh-agent

+0

Que signifie 'Git.open ('.')'? & comment puis-je m'authentifier à pousser? – jonhue