
2025/12/22 17:24
**Debian の Git 移行** Debian はコード管理のために、よりシンプルで効率的な Git ワークフローへ移行しました。今回の変更では、リポジトリ構成の更新、ブランチ方針の明確化、そして開発者間の協働を促進する自動化ツールが導入されます。 主なポイント - **集中管理型リポジトリ**:主要プロジェクトはすべて公式 Debian Git サーバにホストされています。 - **ブランチモデル**:専用の機能ブランチと長期サポート(LTS)ブランチを備えた、シンプルな `master` ベースのワークフローです。 - **自動チェック**:プッシュごとに継続的インテグレーションパイプラインが実行され、テスト・リンティング・セキュリティスキャンを行います。 - **ドキュメント更新**:貢献ガイドラインや開発者ハンドブックは新しいプロセスに合わせて改訂されています。 この変更によりマージコンフリクトの減少、リリースサイクルの高速化、そして Debian のすべての貢献者がプロジェクト状況を把握しやすくなることを目指しています。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
## 要約 Debian の Git への移行プロジェクトは、すべてのソースコード操作を Git に完全に置き換え、tarball と従来の Debian ソースパッケージを排除することを目指しています。このイニシアチブは `dsc`(従来)と Git の両方のワークフローを同時に実行し、任意のパッケージは `dgit clone` でクローンでき、メンテナーは `dgit push` またはヘルパーツール `tag2upload` を使って変更をリリースできます。ロスレスかつ双方向変換(`src:dgit`)によりデータ損失が保証されません。 歴史的に、Debian は 2013 年以降、「patches‑applied」(上流ソース+適用済み Debian パッチ)の標準 Git フォーマットを使用してきました。これは「patches‑unapplied」クイルトキューよりも明確で使いやすいため優先されます。リリース済みパッケージの公式 git リポジトリは `*.dgit.debian.org` というパターンに従い、すべてのオブジェクトをホストし、append‑only(追記専用)で、署名タグによって真正性が保証されます。ただしマージリクエストなどのフォージ機能は欠如しています。`dput` を使ったレガシーアップロードはまだ Git にインポートされません。 将来的な計画としては、すべてのパッケージアーカイブをインポートして任意のプロジェクトが直接 Git からクローンできるようにし、セキュリティパッチワークフローを改善して適切な git 履歴を提供するとともに、内部 Debian 消費者(buildds、QA)がソースコードを Git から直接取得できるようにします。Debian 全体のドキュメントは git‑first パッケージングを推奨し、上流 tarball を Git にインポートすることを抑制し、標準ブランチ構造を強制するよう更新される必要があります。 移行チーム(Ian Jackson(dgit、git‑debrebase)と Sean Whitton(tag2upload、dgit))は、採用を加速させ残っている技術的課題を解決し、サービスをベータ外に宣言する前にアウトリーチ、マーケティング、および執筆支援を求めています。
本文
Debian Git Transition Project – 概要と行動の呼びかけ
TL;DR
- 目標: Debian のソースコードに関わるすべての操作を git で完結させること。
- 進捗状況: dsc と git の両方を使うワークフローが動作し、上流リリースは
/tag2upload
によって署名付きタグとして公開されている。dgit push - 協力要請: 広報・導入促進・ドキュメントの大幅改訂が必要。
目標
- 普遍的な Git アクセス – Debian のソースコードへの閲覧、編集、ビルドはすべて通常の git 操作で行う。
- カノニカル形式 – ソースパッケージは tarball ではなく git データとして格納・交換する。
- 正式な履歴公開 – 上流の git 履歴を追跡可能な Debian リリースとして再公開する。
- dsc の依存削除 – ユーザーは旧 Debian ソースパッケージ形式を学ぶ必要がなくなる。
実績と現在状況
| 項目 | ステータス |
|---|---|
| 目標 1 | ✔️ 完全達成(git ワークフローがすべてで動作) |
| 目標 2 | ✔️ 部分的に実現:dsc と git の両立はできるが、移行中 |
| 目標 3 | ⚠️ / が広く採用されることに依存 |
| 下流アクセス | ユーザーは任意のパッケージを git でクローンできる() |
| メンテナワークフロー | メンテナは完全に git で作業(例:、) |
| Git からのリリース | による署名付きタグ。tarball は不要 |
| パッチ管理 | Debrebase と dpm が「パッチ適用済み」ワークフローを実現 |
コアエンジニアリング原則
Debian のソースパッケージは、情報損失なしに git へ変換し、また逆も可能である。
双方向ゲートウェイ(
src:dgit)が旧 .dsc フォーマットとカノニカルな git ツリー(dgit ビュー)を相互変換する。これにより:
- 既存のアップロードを git にインポートできる
- Git ブランチを Debian アーカイブ用のソースパッケージへエクスポートできる
パッチ適用済み vs. パッチ未適用
| 機能 | パッチ適用済み | パッチ未適用 |
|---|---|---|
| 簡便性 | ✔️ すべての変更が単一ツリーに集約 | ✖️ Quilt などのパッチキューが必要 |
| 慣れ | ✔️ 通常の git リポジトリと同様 | ❌ 外部者には混乱を招く |
| ビルド安全性 | ✔️ セキュリティパッチ漏れのリスクなし | ❌ パッチ抜けでビルドされる恐れ |
| ツール | ✔️ 、 など | ✖️ Quilt 等が必要 |
推奨: パッチ適用済み フォーマットをカノニカル形式とする。
結果としての不便さ
によるチェックアウト時のファイル内容変更はサポートできない(変換は安定である必要がある)。.gitattributes- 既存メンテナブランチはカノニカル git 表現とずれが生じる可能性があり、手動解決が必要。
- ユーザー寄稿の変更はマージではなくチェリーピックで統合するケースが多い。
Git でソースコードを配布
| リポジトリ | 用途 |
|---|---|
| 全ての git ベースアップロード(append‑only)を保持。2013 年以降、すべてのリリース版に署名付きタグが付与される。 |
旧アーカイブ () | dsc ファイルの権威ある場所。変更は各 の フィールドで追跡される。 |
Salsa を使わない理由
Salsa はマージリクエスト機能を持つフォージだが、Debian ソースアーカイブに必要な信頼性・セキュリティ・append‑only 保証を備えていない。がそれらの要件を満たす。*.dgit.debian.org
ロードマップ
現在進行中
- Tag2Upload – サービスを最終化し、残存するベータ課題を解消中。
今後の技術
- 全パッケージ dsc インポーター
- 既存
アップロードを git に取り込み、任意のパッケージが git 経由でクローン可能に。dput
- 既存
- Git ベースのセキュリティリリース
- 完全な git を使ったセキュリティパッチとバックポートを実現。
- 内部 Debian ユーザーは Git へ移行
- ビルドサーバ、QA ツール等がソースを直接 git から取得。
意識共有・採用促進
- 広報活動: マーケティング、ドキュメント更新、コミュニティ教育が必要。
- 誤解の回避:
とdgit push
は既存ワークフロー(例:tag2upload
、quilt)を補完し、古いgbp pq
パイプラインを置き換える。dput
ドキュメント
Debian のパッケージングドキュメントは以下を推奨:
- git ファーストのワークフローを推奨。
- 上流 tarball を git に取り込むことは禁止し、常に上流 git を利用。
/tag2upload
で公開する手順を明確化。dgit push
Git Transition Team がアドバイスできるが、外部の協力も不可欠。
人員・連絡先
| 名前 | 役割 |
|---|---|
| Ian Jackson | dgit と git‑debrebase の作者。tag2upload の共同創設者。 |
| Sean Whitton | tag2upload の共同創設者、git‑debpush のメンテナ、元 Debian 技術委員会議長。 |
連絡先
- メール:
,ijackson@chiark.greenend.org.ukspwhitton@spwhitton.name - メーリングリスト:
git-debpush@packages.d.o - IRC (OFTC):
とDizietspwhitton
謝辞
特別に感謝:
- Joey Hess – 元 dgit デザインセッション。
- Guido Günther、Alexander Wirt、Joerg Jaspert、Thomas Goirand、Antonio Terceiro – ツールと管理全般での貢献。