5

私はPythonとGitの両方が初めてです。Linux サーバーのワークスペースから以下の git コマンドを実行するのと同じアクションを実行する必要がある Python スクリプトを作成中です。(つまり、/local/mnt/workspace/)

git clone git://git.xyz.com/platform/manifest.git -b jb_2.5

Fab ライブラリを使用してみましたが、モジュール fabric.api がインストールされていないため、続行できませんでした。また、

import git
git.Git().clone("git://git.xyz.com/platform/manifest.git") 

うまくいきませんでした。

これを行うための他の解決策はありますか?

4

3 に答える 3

17

gitを呼び出すことができるgit関数を定義できます。ユーザーをgitコマンドに制限することは、セキュリティ上の目的で重要です。そうしないと、git urlを要求したり、他の手法を使用したりすると、データの損失やその他の悪意のある攻撃が発生する可能性があります。

import subprocess

def git(*args):
    return subprocess.check_call(['git'] + list(args))

# examples
git("status")
git("clone", "git://git.xyz.com/platform/manifest.git", "-b", "jb_2.5")

に変更するとsubprocess.check_output、成功を判断する代わりに、出力gitの出力を確認できます(たとえばgit("status")、gitリポジトリにいない場合は例外が発生します)。


補足:一般的なパッケージのインストールを支援するように設計されたPIPを見てください。

于 2013-02-26T01:01:46.460 に答える
3

os.system(またはを介し​​て) シェルアウトするか、 GitPythonパッケージsubprocessを使用できます。

于 2013-02-26T01:00:41.160 に答える
1

「機能しなかった」以外のエラーが何であるかを示さなかったため、問題が正確に何であったかを推測するのは困難です。

しかし、問題は、使用しようとしているモジュールをインストールしたことがないため、がimport git発生したことだと思います。ImportErrorgit

その場合、実行方法を説明したのとまったく同じreadmeドキュメントで、git.Git().clone("git://git.xyz.com/platform/manifest.git")インストール方法も説明します。

しかし、ほとんどの場合、必要なのは、pip install pygit2またはpip install GitPythonそのようなものだけです。(必要なsudo場合や、使用する前にインストールする必要がある場合などがありますがpip、プラットフォームや知識のレベルについては何も知らないため、必要なものを正確に推測する方法はありません。)

于 2013-02-26T01:42:53.763 に答える