問題タブ [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.
git - ディレクトリ内の複数のリポジトリを見つけるためにpygit2のdiscover_repositoryを使用する
履歴から特定のアイテムを取得するために、裸の git リポジトリの (ローカル) ディレクトリにアクセスする必要があるプロジェクトがあります。ディレクトリを反復処理して次のようなことを行う関数が必要です。
for
しかし、これをループで実行できる必要があります。
各リポジトリは異なるプロジェクト用であり、その名前は、コード内の他の場所でネストされたループを使用してリストに配置および保存されます。
repo
1)コード全体でリストインデックスに基づいてプロジェクト名のみを参照する場合、上記の代わりにプロジェクト名を使用することは理repo_n
にかなっていますか?リポジトリを検出するループの各反復で増分されます)?
2) これらのリポジトリをfor
ループで検出して、すべてを一度に取得できるようにすることは可能ですか?それとも、1 つずつ行う必要がありますか?
3)これをループで実行できる場合、プロジェクト名と新しく発見されたリポジトリ オブジェクトを含むタプル (または辞書) を作成するにはどうすればよいですか?
python - pygit2 で SSL 検証を無効にする方法
pygit2 を使用して、自己署名証明書を保持する内部サーバーからレポをプログラムで複製しています。pygit2 は証明書でエラーを発生させます。検証をオフにするにはどうすればよいですか?
libgit2 - Debian Docker に libgit2 と pygit2 をインストールする
Debian:Jessie docker ファイルを使用して pygit2 と libgit2 をインストールしようとしています。ubuntuではほぼ同じパッケージでパッケージをコンパイルできましたが、debianではコンパイルできませんでした。
以下は私が使用したDockerfileと出力エラーサンプルです
しかし、libgit2 ライブラリをコンパイルすると、次のエラーが発生します
私が依存関係を逃した場合、誰かがアドバイスできますか?
ありがとう
アップデート
libgit2 をバージョン 0.24.1 に更新しようとしましたが、それでも次のエラーが発生します
git - タグが他のブランチのコミットを指している場合、最後のリリース以降のすべてのコミットを一覧表示します
master
最後のリリース以降にブランチに対して行われたすべてのコミットを一覧表示する必要があります。を使用してこの機能を実装する必要がありますpygit2
。しかし、ここでは状況が少し異なります。
ブランチへのコミットをmaster
使用して、ブランチでリリースが行われます。素朴なアプローチは、 last のを見つけて、から this まで履歴を下に移動することです。しかし、これは私の場合はブランチにするのではなく、ブランチにすることです。興味深いことに、ブランチを実行すると、次のように正しい出力が得られます。tag
other
sha
tagged commit
HEAD
sha
tagged commit
master
other
master
ここで、ブランチsometag
で行われたコミットを指します。したがって、ブランチother
で行われたすべてのコミットのリストがある場合、これをプログラムで実装する方法を知りたいです。master
私の頭に浮かぶ解決策の 1 つは、コミット リストの を見つけてフィルター処理することですtimestamp
。tagged commit
これをどのようgit log
に行っていますか、何かアイデアはありますか?
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
のファイルの内容が表示されました。ローカルとリモートのリポジトリで変更が正常にコミットされているのを見ることができるので、それは奇妙ですが、その後、ファイルが以前のコンテンツに再び変更されたように見えます...
その例:
- コンテンツが「12345」のファイルをコミットしてプッシュし、その文字列を「54321」に置き換えます
- 上記のコードを実行します
/li>git log
ファイルが正しくコミットされたことを示しています。リモートリポジトリでは、コンテンツが「54321」のファイルが表示されますが、ローカルでは次のようにgit diff --cached
表示されます。
python - pygit2 でリベースを実行するにはどうすればよいですか?
この質問は、 とのマージを実行する方法に触れていますpygit2
が、私の理解では、新しいコミットが発生します。リベースを実行する方法はありますか?これにより、新しいコミットが発生せず、特定のリモートからの最新のものに対応するようにブランチ参照が単純に早送りされますか?
python - リポジトリ内の任意の場所から PyGit2 の現在のリポジトリのパスを取得します
私が取り組んでいるリポジトリ内で特定の操作を実行するために Pygit2 を使用しています。
コード ファイルがリポジトリのルートにない場合、リポジトリ内のどこからでもリポジトリのパスを取得するにはどうすればよいですか?
関数がルートから呼び出された場合は以下を実行できますが、リポジトリコード内のどこからでも実行する場合はどうすればよいですか?
python - pygit2 でリベースするには?
git rebase
withを実装しようとして立ち往生してい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 ) では、早送りマージについて説明していますが、適切なリベースについては説明していません。
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つの解決策について半分ほど
どんな助けでも大歓迎です