Note 本記事の内容は Linus 氏の発言が人を傷つける場合に筆者がそれを良しと考えるといった意図はございません 少し古い記事になるが、 Linus Torvalds 氏 の GitHub に対する苦言が記事になっていた。 LinuxカーネルにNTFSドライバーが追加、トーバルズ氏はGitHub経由のマージに苦言 - ZDNet Japan Linus 氏が GitHub について苦言を呈するのは今に始まったことではない(後述)が、 別に GitHub のすべてを否定しているわけではない。[1] では一体何が不満なのか。Linus 氏の理想とする git の開発フローを考察した上で、整理してみたい。 Linus 氏の理想 結論からいうと、 「意味あるコミットを作れ」「コミットを大事にしろ」 という思想が伺える。 では 「意味あるコミット」「大事にされたコミット」 とは何なのか。 筆者な
はじめに Gitのインデックスの中身、Gitのブランチの実装に続く、Gitの中身を見てみようシリーズです。Gitが管理するオブジェクトの種類や中身について見てみます。基本的にはPro Gitの10. Gitの内側をまとめなおしたものです。 オブジェクトの種類 Gitは、内部でファイルやコミットを「オブジェクト」として.git/objects以下に保存しています。オブジェクトには以下の4種類があります。 blobオブジェクト: ファイルを圧縮したもの。ファイルシステムの「ファイル」に対応 treeオブジェクト: Blobオブジェクトや別のTreeオブジェクトを管理する。ファイルシステムの「ディレクトリ」に対応 コミットオブジェクト: Treeオブジェクトを包んだもの。コミットのスナップショットに対応するTreeオブジェクトに、親コミット、コミットメッセージなどを付加する タグオブジェクト:
Git LFS の機能が実際にどういう感じで動作しているかを、基本的な Git の手順に沿って少しだけ詳しく調べてみました。 なお、ロック機能については検証していません orz (今後に期待) TL;DR ワークツリーの情報をリポジトリ(.git/)に格納するタイミング(clean filter)で対象のファイルがメタ情報(ポインタ)に置き換えられ、ファイルの実体(オブジェクト)は .git/lfs/ 以下に格納される push の直前に LFS API を通してオブジェクトがサーバーにアップロードされる リポジトリ(.git/)からワークツリーに展開するタイミング(smudge filter)でメタ情報から実体ファイルに置き換えられる LFS オブジェクトが .git/lfs/ 以下にない場合は LFS API を通してサーバーからダウンロードされる コミット時、マージ時、チェックアウト
こんにちは、SWETでCI/CDチームの前田( @mad_p )です。 SWETではCI/CDチームの一員として、Jenkins運用のサポートや、CI/CD回りのノウハウ蓄積・研究をしています。 はじめに Gitリポジトリをクローンすると、ローカルフォルダにはそのリポジトリの全体がダウンロードされ .git というフォルダに格納されます。ブランチをチェックアウトすると、ブランチ内のファイルがワーキングツリーとして展開されます。この様子を図にするとこのようになります。 この .git とワーキングツリーの使うディスク容量を節約しようというのが今回のお話です。特にJenkinsにおいて、大きめのGitリポジトリをクローンしてくる場合に課題があり、いろいろ工夫してみたので、その結果を紹介します。同じCI/CDチームの加瀬による記事「大規模リポジトリで高速にgit cloneするテクニック」と内容
はじめに 今まで commit message を「なんとなく」書いていたが、プレフィックスをつけることで、コミットメッセージに対する考え方が変わった。 そのおかげで開発効率が上がったので、その内容をシェア。 プレフィックスをつけるってどういうこと? 以下のようにコミットメッセージの先頭に、なんらかの文字をつけること。 feat: xxx という機能を追加 fix: yyy で発生するバグを修正 refactor: zzz の機能をリファクタ のように feat, fix, refactor などがプレフィックスです。 最近 OSS の Contribution Guide などでよく見かけます。 導入したプレフィックスルール Angular.js/DEVELOPERS.md Angular.js の開発者ガイドに書いてあるメッセージを参考にしました。 以前のコミットメッセージ(例 ちなみ
原文(投稿日:2020/04/07)へのリンク 2005年4月7日、今からちょうど15年前、Gitはセルフホストの可能な完成度に到達した。すなわち、コードをコミットするためにGit自身を使用できるようになったのだ。今日、Gitは最も広く使用される開発ツールのひとつとなり、開発者がコードを管理する方法を大きく変えている。InfoQは今回、GitHubの上級(Distinguished)ソフトウェアエンジニアであるJeff King氏、GitLabのシニアデベロッパエバンジェリストであるBrendan O'Leary氏と、Gitの持つ重要性について話す機会を得ることができた。 Gitは元々、LinuxカーネルのSCM問題に終止符を打つために、Linuxの作成者でメンテナであるLinus Torvalds氏の手によって生まれた。氏は当時のLinuxが使用していたSCMであるBitKeeperの代
https://martinfowler.com/articles/branching-patterns.html 最新のソース管理システムには、ソースコードのブランチを簡単に作成できる強力なツールが用意されています。しかし、最終的にはこれらのブランチをマージしなければならず、多くのチームは混み合ったブランチに対処するのに膨大な時間を費やしています。複数の開発者の作業をインテグレーションし、本番リリースまでの道筋を整理することに集中して、チームが効果的にブランチを利用できるようにするためのパターンがいくつかあります。全体的なテーマとしては、ブランチを頻繁にインテグレーションし、最小限の労力で本番環境に展開できる健全なメインラインを作ることに注力すべきだということです。 ベースパターン ソースブランチング ✣ メインライン ✣ 健全なブランチ ✣ インテグレーションパターン メインラインイン
10 Years of Git: An Interview with Git Creator Linus Torvalds | Linux.com gitの10週年を記念して、リーナス・トーバルズがインタビューに答えている。以下はその翻訳である。 なぜGitを作ったのか? トーバルズ:俺はソース管理ツールなんて作りたくなかったし、コンピューターの業界において最も興味がないものだと見なしていた(データベースは別だが)。それにソース管理ツールなんてどれも嫌いだった。しかし、BitKeeperがやってきてからというもの、ソース管理に対する見方が変わったね。BitKeeperは大抵のことを正しく行っていた。レポジトリのローカルコピーがあることと、分散マージはでかかった。分散ソース管理の何がいいかというと、ソース管理ツールの問題を吹っ飛ばせることだ。「誰が変更を行えるか」といった政治問題があるが、B
オンライン診療とは、自宅にいながら医師に直接毎日のスキンケアを相談したり、医薬品や漢方薬の処方を受けることができたりする診察のこと。お薬が処方された場合は郵送で薬局等にお薬を取りにいかなくても、自宅に届けられます。 普段、病院では発生する診察費用や処方箋費用はもちろん、お薬代以外の費用は一切かかりません。
10 年前の今週、Linux カーネル コミュニティは困難な問題に直面しました。すなわち、バージョン管理システム BitKeeper を使うことができなくなり、他のソフトウェア構成管理 (SCM) システムも分散システムのニーズを満たすことができませんでした。Linux の生みの親 Linus Torvalds は自らこの困難に立ち向かい、週末をはさむ 10 日間くらいの間雲隠れし、翌週には Git を持って登場しました。今日、Git は何千というプロジェクトで利用されており、プログラマーの間に新しいレベルのソーシャル コーディング形態をもたらしました。 この記念すべきマイルストーンを祝うために私たちは Linus に Git の舞台裏やこのプロジェクトに対する彼の考え、またこのプロジェクトがソフトウェア開発に与えた影響について話してもらいました。本記事は彼のコメントです。この質疑応答に続
GCCはgitへの移行を計画しているが、GCCの既存のsubversionレポジトリをgitレポジトリに変換する作業が難航している。 GCCの移行作業を検証しているのは他ならぬEric S. Raymond(ESR)だ。 ESRお手製の変換ツール、reposurgeonはsubversionからgitへの変換ができる。 Resource page for reposurgeon 3.44 しかしGCCは30年もの歴史を持ち、そのsubversionレポジトリも複雑だ。 ESRはGCCのためにreposurgeonのバグを潰し、勢い変換しようと試みたが、意外な障害に出くわした。メモリ不足だ。 GCC's Conversion To Git Is Being Held Up By RAM, a.k.a. Crazy DDR4 Prices - Phoronix ESRの所有する64GBのメモリ
翻訳元: Oh shit, git! gitは使いにくい! Gitは難しい: 中身を破壊にするのは簡単なのに、過去の過ちを修正する方法を見つけるのは極めて困難だ。ドキュメントには修正するコマンド名が書かれていても、その名前を知らなければ使いものにならない。これは「鶏が先か、卵が先か」というジレンマを抱えている! だから私が陥った数々の問題をいかにして抜け出すかを書いた。 なんて事だ!私は大変な誤ちを犯した!タイムマシンを呼び出すにはどうすればいい!? git reflog # you will see a list of every thing you've done in git, across all branches! # each one has an index HEAD@{index} # find the one before you broke everything git
初めに LinusによるGitのinitial commitのREADMEの訳です。 社内のSVNからの移行を促すために資料を整備していたのですが、SVNでやっていたことを移し替えたりコマンドを覚えたりするより内部構造を知ったほうが早いことに気づきました。 それで、gitの内部構造についての解説資料を色々見ていたのですが、データ構造については原作者のこのREADMEに言い尽くされている気がします。のみならず、gitを使うものが抱くべき精神性のようなものが示されており、深い感銘を覚えました(ヒャッハー)。 README: ”GIT - 馬鹿コンテンツトラッカー” コミットメッセージ:git, 地獄からきたインフォメーションマネージャ gitの意味 "git" は何を意味することも出来る、お前の気分次第だ。 3文字で、発音可能で、実際のUNIXシステムで共通コマンドとして使われていないものであ
はてなのアプリケーションエンジニアのid:shiba_yu36です。社内技術勉強会で「新機能作成時に開発ブランチに細かくmergeしていく戦略」という発表をしたので、資料を公開します。 speakerdeck.com 以下、簡単に文字でまとめておきます。 戦略 ユーザーに新機能が見えないようにする工夫をし、新機能のbranchもどんどん開発ブランチにmergeしていく mergeされたものは随時本番にリリースされるが、ユーザーに見えない工夫をしているので問題なし PRは可能な限り細かくする 機能が完成したら最後にユーザーに新機能を見えるようなPRを作り、mergeしてリリースする なぜこの戦略を使うのかいろんな失敗を経験して、この戦略を最近使っている。 失敗パターンその1: 巨大PRパターン 失敗パターンその2: 新機能リリースブランチパターン 失敗パターンその1: 巨大PRパターン 新機
数年前、Microsoftは、社内全体のエンジニアリングシステムを活性化させるため、数年間にわたる投資を行う決定をしました。私たちは山のような数のチームを抱える大企業です。チームはそれぞれ、担当のプロダクト、独自の優先順位、プロセス、ツールを持っています。”共通の”ツールもありますが、チームによって様々に異なる点も多く、内部で開発した単発のツールも数え切れないほどあります(「チーム」とは社の部門のようなもので、数千のエンジニアの集まりです)。 この状況にはたくさんのマイナス面があります。 似たようなツールを構築しているチームがいくつもあり、巨額の冗長な投資が生まれている 「クリティカルマス(損益分岐点を超える生産量、普及率)」に向けた設備投資ができない 皆がバラバラのツールやプロセスを用いているため、従業員が異動しにくい 組織の垣根を越えてのコード共有が難しい “MS限定”ツールの過多のた
インストールもアップデートも簡単にできるDocker Composeでのインストール方法を採用します。 事前準備 Docker1.10.0+, Docker Compose1.6.0+がインストールされている環境を用意してください。 Docker for Windowsには非対応ですので、Windowsの場合は、Docker Toolboxや、Vagrant(サンプル)などでLinux仮想マシン上にDocker環境を用意してください。 Step 1. docker-compose.ymlを作成する 以下のコードをdocker-compose.ymlという名前で保存してください。 version: '2' services: gitlab: container_name: gitlab image: gitlab/gitlab-ce:latest restart: always enviro
GitリポジトリとDockerイメージレジストリを統合した「GitLab 8.8」リリース。開発や継続的統合のワークフローがシンプルに GitLabは、Gitリポジトリを中心とした開発ツール「GitLab 8.8」をリリースしました。 GitLabはGitリポジトリ機能の機能に加え、Wikiやイシュートラッキング、コードレビュー、アクティビティフィード、そしてテストやビルド、デプロイなどの自動化を行うGitLab CI機能などが統合された開発ツールです。 GitLab 8.8ではパイプライン機能が強化。パイプラインの状態を画面で参照できるようになりました。 もう1つの大きな機能強化が、Dockerイメージレジストリ機能の統合です。 GitLab 8.8には最初からDockerイメージのレジストリ機能が組み込まれており、インストールするとすぐに使える状態になっています。GitLab CIによ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く