0
Je n'arrive pas à trouver les fichiers modifiés entre deux validations différentes. Voici la configuration, la version de Ruby et Gem Grit, et ce qui se passe quand je lance le programme:Comment savoir quels fichiers ont été modifiés entre les validations à l'aide de Grit
> cd /temp
> mkdir tt
> cd tt
> git init
Initialized empty Git repository in C:/temp/tt/.git/
> ruby --version
ruby 1.8.7 (2010-01-10 patchlevel 249) [i386-mingw32]
> gem list grit
*** LOCAL GEMS ***
grit (2.0.0)
> ruby ..\git_diff_test.rb
Commit #1 succeeded.
Commit #2 succeeded.
c:/apps/ruby/lib/ruby/gems/1.8/gems/grit-2.0.0/lib/grit/repo.rb:290:in `diff': wrong number of arguments (4 for 3) (ArgumentError)
from c:/apps/ruby/lib/ruby/gems/1.8/gems/grit-2.0.0/lib/grit/repo.rb:290:in `diff'
from ../git_diff_test.rb:13
Voici le programme de rubis:
require 'rubygems'
require 'grit'
include Grit
File.open('t1.txt', 'w') { |f| f.write('hi/bye') }
repo = Repo.new('.')
repo.add('.')
puts "Commit #1 #{repo.commit_all('1') ? 'succeeded' : 'failed'}."
File.open('t1.txt', 'w') { |f| f.write('hi/bye twice') }
File.open('t2.txt', 'w') { |f| f.write('hi/bye 2') }
repo.add('.')
puts "Commit #2 #{repo.commit_all('2') ? 'succeeded' : 'failed'}."
commits = repo.commits
the_diff = repo.diff(commits[0], commits[1]) # line 13 with the error
p the_diff
En utilisant les outils de ligne de commande, ce serait 'git diff --numstat commit1..commit2', mais je ne sais pas comment emula te que dans Grit. – Novelocrat
Merci pour le pointeur. L'appel qui échoue échoue en appelant un appel de niveau inférieur qui exécute et appelle la ligne de commande git diff. L'appel de cette fonction de niveau inférieur produit un diff, le problème est que la définition des options de ligne cmd est supprimée. Il y a un autre problème, à moins que le répertoire courant du programme ruby soit dans l'arbre de travail, il peut trouver le répertoire .git, donc l'appel exec échoue - la commande .add souffre également de ce problème. Comme il s'agit d'une application threadée, changer le pwd ne fonctionnera pas - je dois donc écrire des scripts shell qui font le travail, plutôt que d'utiliser la bibliothèque Grit. –