2

私は、ユーザーが git などの基本的なアクションを行うための小さなプログラムを作成しようとしています。また、プライベート リモート リポジトリのクローンを作成するには、多くの問題に直面しています。

次の構成があります: Python 3.4 Windows GitPython Ssh 接続がリモート サーバーに確立されました。

これが私のコードです:

print(blue + "Where to clone repos ?")
path_repo = input(cyan + "> " + green)
try:
    assert os.path.exists(path_repo)
except AssertionError:
    print(red + "Path does not exist")
continue
print(blue + "Name of Repos :")
name_repo = input(cyan + "> " + green)
remote_path = "git@dev01:/home/git/repos/{0}.git".format(name_repo)
local_path = "{0}/{1}".format(path_repo, name_repo)
# Repo.clone_from(remote_path, local_path)
repo = Repo.clone_from(remote_path, local_path)
#print(repo.git.fetch())
#print(repo.git.pull())
#print(repo.git.status())

それはエラーを発生させませんが、スクリプトは最後に停止し、端末をブロックします(なしで無限の空の行を与えてください>>>

それを実行した後、Git Bash に移動して入力git statusすると、ブランチが作成されていないようで、単に init と入力します。そのため、コードの最後の 3 行を追加して、何が変更されているかを確認しますが、何も変更されていません。

Git Bash で と入力git pullすると、彼は master ブランチをうまくプルします...

誰かが私の問題を解決できる場合は、お願いしますか?

どこでエラーを起こしましたか?

ありがとう

4

1 に答える 1

1

コードとあなたが説明するアプローチには多くの問題があります...

1

まず第一に、あなたは持っています

continue

あなたのコードの真ん中に書かれています...だから、あなたが提供したコードは何らかのループにあると思います。ループ内の無条件の後のコードはすべてcontinueデッド コードです。実行されることはありません。

したがって、実際には何も複製しないようです...

すべてのブランチがリポジトリにあることを確認するには、 のようなものを使用してくださいgit branch -va。そのために作られていないのではないかと心配してgit statusいます。

どういうわけか既に初期化されたレポがあるように見えるため、同じ場所にクローンを作成することはできません-クローン作成によりリポジトリが作成されるためです。

また、ディレクトリが存在するかどうかを確認してもgit clone意味がありません。存在しない場合はディレクトリが作成されるためです。


要約すると、以下の簡単なコードを試してください。リポジトリが既に存在するため、おそらくエラーになる行をコメントアウトしました。

print(blue + "Where to clone repo?")
path_repo = input(cyan + "> " + green)
print(blue + "Name of repo:")
name_repo = input(cyan + "> " + green)
remote_path = "git@dev01:/home/git/repos/{0}.git".format(name_repo)
local_path = "{0}/{1}".format(path_repo, name_repo)
#repo = Repo.clone_from(remote_path, local_path)
repo = Repo(local_path)
info = repo.remote('origin').fetch()
if not info:
    print('no fetch information')
for i in info:
    if i.note:
        print('fetched, note is: ' + i.note.strip())
    else:
        print('fetched, no note')
于 2015-06-25T07:21:01.050 に答える