問題タブ [pygit2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
302 参照

git - ディレクトリ内の複数のリポジトリを見つけるためにpygit2のdiscover_repositoryを使用する

履歴から特定のアイテムを取得するために、裸の git リポジトリの (ローカル) ディレクトリにアクセスする必要があるプロジェクトがあります。ディレクトリを反復処理して次のようなことを行う関数が必要です。

forしかし、これをループで実行できる必要があります。

各リポジトリは異なるプロジェクト用であり、その名前は、コード内の他の場所でネストされたループを使用してリストに配置および保存されます。

repo1)コード全体でリストインデックスに基づいてプロジェクト名のみを参照する場合、上記の代わりにプロジェクト名を使用することは理repo_nにかなっていますか?リポジトリを検出するループの各反復で増分されます)?

2) これらのリポジトリをforループで検出して、すべてを一度に取得できるようにすることは可能ですか?それとも、1 つずつ行う必要がありますか?

3)これをループで実行できる場合、プロジェクト名と新しく発見されたリポジトリ オブジェクトを含むタプル (または辞書) を作成するにどうすればよいですか?

0 投票する
1 に答える
478 参照

python - pygit2 で SSL 検証を無効にする方法

pygit2 を使用して、自己署名証明書を保持する内部サーバーからレポをプログラムで複製しています。pygit2 は証明書でエラーを発生させます。検証をオフにするにはどうすればよいですか?

0 投票する
2 に答える
2409 参照

libgit2 - Debian Docker に libgit2 と pygit2 をインストールする

Debian:Jessie docker ファイルを使用して pygit2 と libgit2 をインストールしようとしています。ubuntuではほぼ同じパッケージでパッケージをコンパイルできましたが、debianではコンパイルできませんでした。

以下は私が使用したDockerfileと出力エラーサンプルです

しかし、libgit2 ライブラリをコンパイルすると、次のエラーが発生します

私が依存関係を逃した場合、誰かがアドバイスできますか?

ありがとう

アップデート

libgit2 をバージョン 0.24.1 に更新しようとしましたが、それでも次のエラーが発生します

0 投票する
1 に答える
1931 参照

git - タグが他のブランチのコミットを指している場合、最後のリリース以降のすべてのコミットを一覧表示します

master最後のリリース以降にブランチに対して行われたすべてのコミットを一覧表示する必要があります。を使用してこの機能を実装する必要がありますpygit2。しかし、ここでは状況が少し異なります。

ブランチへのコミットをmaster使用して、ブランチでリリースが行われます。素朴なアプローチは、 last のを見つけて、から this まで履歴を下に移動することです。しかし、これは私の場合はブランチにするのではなく、ブランチにすることです。興味深いことに、ブランチを実行すると、次のように正しい出力が得られます。tagothershatagged commitHEADshatagged commitmasterothermaster

ここで、ブランチsometagで行われたコミットを指します。したがって、ブランチotherで行われたすべてのコミットのリストがある場合、これをプログラムで実装する方法を知りたいです。master

私の頭に浮かぶ解決策の 1 つは、コミット リストの を見つけてフィルター処理することですtimestamptagged commitこれをどのようgit logに行っていますか、何かアイデアはありますか?

0 投票する
1 に答える
477 参照

python - Pygit2:なぜマージはブランチを汚れた状態のままにするのですか?

現在、Pygit 0.24.1 (libgit 0.24.1 と共に) を実行しており、2 つのブランチ ( と など) があるリポジトリで作業していprodますdev

すべての変更は、最初にブランチにコミットさdevれ、リモート リポジトリにプッシュされます。そのために、次のコードがあります。

これは非常にうまく機能し、ローカル コミットとリモート コミットも確認​​でき、ローカル リポジトリはクリーンなままです。

コミットするものは何もありません。作業ディレクトリはクリーンです

次に、prodブランチにチェックアウトし、HEAD コミットをマージしたいと考えていdevます。そのために、次の別のコードを使用します (devブランチへのチェックアウトを常に開始すると仮定します)。

ブランチがローカルとリモートの両方でマージされているのを実際に確認できます、このコードの実行後、コミットされたファイルは常にブランチで変更された状態のままになりますdev

ブランチ dev で

コミットする変更: (「git reset HEAD ...」を使用してステージングを解除します)

変更: any_file

ただし、誰もそのファイルを変更していないと確信しています。実際には、 agit diffは何も示していません。この問題は、既にコミットされたファイル (つまり、以前に少なくとも 1 回コミットされたファイル) でのみ発生します。ファイルが新しい場合、これは完全に機能し、ファイルはクリーンな状態のままになります。

いくつかの詳細が欠けていると確信していますが、それが何であるかを見つけることができません。ファイルが変更されたままになっているのはなぜですか?

編集: 明確にするために、私の目的は FF (Fast-Forward) マージを行うことです。Pygit2 のドキュメントに非 FF マージの実行に関するドキュメントがあることは知っていますが、ブランチを介してコミット ハッシュを保持するため、最初の方法をお勧めします。

EDIT 2:@Leonのコメントの後、私はダブルチェックしましたが、実際にgit diffは出力が表示されず、コミットgit diff --cachedのファイルの内容が表示されました。ローカルとリモートのリポジトリで変更が正常にコミットされているのを見ることができるので、それは奇妙ですが、その後、ファイルが以前のコンテンツに再び変更されたように見えます...

その例:

  1. コンテンツが「12345」のファイルをコミットしてプッシュし、その文字列を「54321」に置き換えます
  2. 上記のコードを実行します
  3. git logファイルが正しくコミットされたことを示しています。リモートリポジトリでは、コンテンツが「54321」のファイルが表示されますが、ローカルでは次のようにgit diff --cached表示されます。

    /li>
0 投票する
1 に答える
425 参照

python - pygit2 でリベースを実行するにはどうすればよいですか?

この質問は、 とのマージを実行する方法に触れていますpygit2が、私の理解では、新しいコミットが発生します。リベースを実行する方法はありますか?これにより、新しいコミットが発生せず、特定のリモートからの最新のものに対応するようにブランチ参照が単純に早送りされますか?

0 投票する
2 に答える
859 参照

python - リポジトリ内の任意の場所から PyGit2 の現在のリポジトリのパスを取得します

私が取り組んでいるリポジトリ内で特定の操作を実行するために Pygit2 を使用しています。

コード ファイルがリポジトリのルートにない場合、リポジトリ内のどこからでもリポジトリのパスを取得するにはどうすればよいですか?

関数がルートから呼び出された場合は以下を実行できますが、リポジトリコード内のどこからでも実行する場合はどうすればよいですか?

0 投票する
0 に答える
294 参照

python - pygit2 でリベースするには?

git rebasewithを実装しようとして立ち往生していpygit2ます。

このリポジトリの履歴を想定して、使用してリベースtopicするmaster方法はpygit2? (つまり、 と同等git rebase master topic):

pygit2 documentationによるとmerge_trees、この目的に使用できます。これまでのところ、私は得ました:

これはエラーで失敗しますGitError: failed to create commit: current tip is not the first parent

その他の SO の質問 ( hereおよびhere ) では、早送りマージについて説明していますが、適切なリベースについては説明していません。

0 投票する
1 に答える
219 参照

python - RHEL7.2 で python-pygit2 を正しくインポートする (SaltStack gitfs で使用するため)

pygit2 メソッドを使用して、SaltStack の gitfs をセットアップしようとしています。マシンに pygit2 と libgit2 をインストールしました。

python-devel パッケージもインストールしました。これはすべて Python 2.7 用です。

正しくインストールされているかどうかをテストするために pygit2 パッケージをインポートしようとするたびに、大量の cffi 警告とエラーが表示されます。それはこのスタック トレースで終わります:

ここに私が試したことのリストがあります:

  • アンインストール/再インストール (yum を使用)
  • バイナリ経由で libgit2 をインストールしてから、pip を使用して pygit2 をインストールしようとしています (これも GCC コンパイラ エラーが原因で失敗します)。
  • GCC コンパイラがインストールされていることを確認しました
  • /usr/lib64/python2.7/site-packages にあるcffiファイルを [..]pygit2/ pycache /に移動しようとしました
  • 他の質問をいくつか検索しました - 私はこのリンクを見つけました JDavidのコメントを参照してください 2つの解決策について半分ほど

どんな助けでも大歓迎です