Cannot detach head
オープン
まだ誰も着手していません。
- 主要言語
- Python
- スター
- 1.7k
- フォーク
- 408
- 平均マージ
- 2日 57分
- マージ済み PR(30日)
- 7
説明
code
import tempfile
import pygit2
import subprocess
import shutil
import sys
print(f"python: {sys.version}")
print(f"libgit2: {pygit2.LIBGIT2_VERSION}")
print(f"pygit2: {pygit2.__version__}")
repodir = tempfile.mkdtemp()
repo = pygit2.init_repository(repodir, bare=True)
sig = pygit2.Signature('Test User', 'testuser@nowhere.net')
data = 'blah blah master'
tree = repo.TreeBuilder()
tree.insert('file', repo.create_blob(data.encode()), pygit2.GIT_FILEMODE_BLOB)
master_commit_oid = repo.create_commit('HEAD', sig, sig, 'master commit', tree.write(), [])
repo.lookup_branch('master').set_target(master_commit_oid)
print(f"dullahan: {repo.head_is_detached}")
repo.head.set_target(master_commit_oid) # no effect?
print(f"dullahan: {repo.head_is_detached}")
subprocess.run(['cat', repodir + '/HEAD'])
data = 'blah blah feature'
tree = repo.TreeBuilder()
tree.insert('file', repo.create_blob(data.encode()), pygit2.GIT_FILEMODE_BLOB)
feature_commit_oid = repo.create_commit('HEAD', sig, sig, 'feature commit', tree.write(), [master_commit_oid])
feature_commit = repo.resolve_refish(feature_commit_oid.hex)[0] # why is this needed?!
repo.branches.local.create('feature', feature_commit)
subprocess.run(['git', '--no-pager', '--git-dir', repodir, 'log'])
shutil.rmtree(repodir)
output
python: 3.11.8 (main, Feb 29 2024, 12:19:47) [GCC]
libgit2: 1.8.0
pygit2: 1.14.1
dullahan: False
dullahan: False
ref: refs/heads/master
commit fd24ce9e6e104d9a3379bd533d1fc77c7ed4c171 (HEAD -> master, feature)
Author: Test User <testuser@nowhere.net>
Date: Mon Apr 29 18:56:30 2024 +0200
feature commit
commit f46e8132e419552a55edaceda91346b9ebdf2a45
Author: Test User <testuser@nowhere.net>
Date: Mon Apr 29 18:56:30 2024 +0200
master commit
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
提供された Python の再現コードを、報告された pygit2 および libgit2 のバージョンで実行し、その後 Repository.head、head_is_detached、lookup_branch、resolve_refish の動作を調査します。観測された HEAD とブランチの参照を、detached HEAD に期待されるセマンティクスと比較します。この再現をカバーするテストがあり、報告された動作が修正されるか明確に文書化されれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- git, python
- 領域
- devtools
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 45/100