20億行のコードを保存し、毎日4万5000回のコミットを発行しているGoogleが、単一のリポジトリで全社のソースコードを管理している理由 Googleは検索サービスやGoogle Apps、Google Cloud Platformなど巨大なサービスを多数運営しています。その同社は、20億行にもおよぶソースコードの管理をサービスやプロジェクトごとに分けず、すべて単一のリポジトリで管理しているそうです。 先週9月14日にサンノゼで開催されたイベント「@Scale」で、Googleによるセッション「The Motivation for a Monolithic Codebase: Why Google Stores Billions of Lines of Code in a Single Repsitory」(単一コードベースへの取り組み:なぜGoogleは単一リポジトリに数十億行ものコー
githubの特定ブランチへのgit push --forceをprotectしてエンジニアの精神崩壊を防ぐ( ꒪﹃ ꒪)ブクブクGitGitHub Protected branches and required status checks もうお済みですか!? 9月4日のことですがgithubより以下の機能がリリースされています。 特定ブランチへのforce pushを無効する 特定ブランチへのマージ時にステータスチェックを必須にする(CIと連携している場合は、テストが通るまでマージできないようにできる) これを実施することで、ある日新人が謎の空のコミットをmasterブランチにforce pushして来たり、ある日途中からJOINした人がpull reqもせずにdevelopブランチに謎コミットをforce pushして来たり、ある日とあるOSSで間違えて一ヶ月前のローカルレポジト
serverspec とか specinfra の Changes を手で書くのがだるくなってきたので、自動化するために octorelease という gem をつくりました。 rubygems.org にもあげてあるので、gem install で入ります。 Rakefile の中に require "bundler/gem_tasks" require "octorelease" みたいに書いて、 $ rake octorelease すると、 こんな感じになります。 何をしてるかというと、rake release した後に、前のバージョンとリリースするバージョンの間に含まれるプルリクエストをgit logで拾って、各プルリクエストに Released as vX.X.X. とコメントをつけ、GitHub 上にリリースを作成し、リリースの本文にはプルリクエストへリンクを張る、ってなこ
はじめに こんにちは、クレイの亀井です。ここ最近一気に気温が上がりましたね。顔に重点的に汗をかくタイプの私には憂鬱な季節がやってまいりました さて、今月正式リリースしました(!) DocBase プロジェクトではクレイ外部のデザイナーの方と一緒に開発しています。SourceTree で Git を使っている方で、軽いデザイン修正などは弊社の Rails プロジェクトに直接手を加えてプルリクエストを送ってくれます。 こちらのデザイナーさんに「プルリクエストを送る際は、作業ブランチで git pull --rebase origin master してから送ってもらえますか?」とお願いすると「pull はわかるんですけど、この --rebase ってなんですか?これつけると何が変わるんですか?」と質問がきたのです。 作業ブランチで git pull --rebase origin master
はじめましてこんにちは、今年新卒でKRAYに入社しました亀井と申します。 会社のみなさんからは「あさちゅん」と呼ばれております。どうぞよろしくお願いします。 突然ですが、みなさん使ってますか? Git。 KRAYではバリバリ活躍してるGitですが、 「よくわからない……」と頭を抱えてる方も多いですね。 わたしも抱えてます。 正直、KRAYに入社するまでターミナルを使ったことすらなく、 Gitも入社してから使いだしたので初心者もいいところです。 そんなわたしが1日約200回×3ヶ月ターミナルでGitコマンドを打ち続けて やっとわかってきた、Gitの「これなんで?」を解説します。 主にGit初心者、Gitについて理解を深めたい人向けです。 もくじ なんでcommitする前にaddしなきゃいけないの? ブランチってなんのために分けるの? HEADってなんなの? 消したファイルもコミットしなきゃい
コマンドラインで作業をしていると、タイプミスや誤入力でエラーが表示されて「イラッ」とした経験を持つ方もいるかと思います。 こんな時、海外ならば「Fuck!(クソッ)」という汚い言葉使いになってしまうでしょう…。 ところが、それを逆手にとって「fuck」とそのまま入力するだけで、誤ったコマンドを自動修正して再実行してくれる便利ツール「The Fuck」が公開されていたのでご紹介! 使い方!一体どのように使うのか、いくつか事例が掲載されているので見ていきましょう。 例えば、何らかのツールをインストールしようとして、管理者権限「sudo」を付け忘れてエラー…、みたいなよくあるパターン。 $ apt-get install vim E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied) E: Una
An open source Git extension for versioning large files Git Large File Storage (LFS) replaces large files such as audio samples, videos, datasets, and graphics with text pointers inside Git, while storing the file contents on a remote server like GitHub.com or GitHub Enterprise. Getting Started Download and install the Git command line extension. Once downloaded and installed, set up Git LFS for y
インフラストラクチャー部の菅原(@sgwr_dts)です。 インフラストラクチャー部のメンバーはオペレーションのため強力な権限のMySQLアカウントを使用していますが、サービス開発をするエンジニアも業務のためにサービスのDBの参照・更新権限を持ったアカウントが必要になることがあります。 セキュリティやオペレーションミスのことを考えると、すべてのエンジニアのアカウントをスーパーユーザーにするわけにはいかないため、都度適切な権限を付与していますが、手動での作業は地味に手間がかかります。 そこでクックパッドではMySQLのアカウント情報をコード化し、リポジトリで管理するようにしています。 gratanによるコード化 MySQLのアカウント管理はgratanという自作のツールを使って行っています。 gratanを使うとMySQLのアカウントをRubyのDSLで記述することができるようになります。
■ スクラム実践入門の紹介 2013年末から1年くらい執筆やら編集やら取りまとめやら続けていたスクラム実践入門が本日発売開始しました。 この本は 2013年末くらいに同僚のあんちぽくんと一緒に自分たちがソフトウェア開発をする時に役に立つ本を書こうと @inao さんに提案したのがきっかけです。git log -p --reverse の1コミット目はこれ commit 710fc0c8cd065ceb24904a6f26bf21ac22d9ddf2 Author: SHIBATA Hiroshi <shibata.hiroshi@gmail.com> Date: Sun Dec 15 02:26:33 2013 -0800 Initial commit diff --git README.md README.md new file mode 100644 index 0000000..5a
2015-03-07 某R社を5日でクビになった話 Hello,World!個人開発でぬくぬくやってきたエンジニアの僕が、縁あってエンジニアインターンし、5日目にしてクビになるという出来事があり、学びが多かったので綴りたいと思います。 ◼︎某社との出会い 焼き肉をおごるという企画で、スカウトが来て、オシャレでキレイな焼き肉屋さんでランチをしました。そこで、スゴイエンジニアさんに「このサービスのこの部分をこうしたほうがよくて、ここまで作ったので開発してもいいですか?みたいにすれば自分のやりたい開発ができるんだよ」と言われ、自分のエンジニアのイメージがガラッと変わって魅了されて、興味を持つようになりました。そのスゴイエンジニアさんは、今も憧れているスゴイ方です。カッコイイなと思っています。 ◼︎某社の技術責任者との出会い 会社訪問を予定していた日に、スゴイエンジニアさんにスゴイエンジニアさんの
$ sudo yum remove git $ sudo yum install gcc curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker $ wget https://www.kernel.org/pub/software/scm/git/git-2.2.0.tar.gz $ tar -zxf git-2.2.0.tar.gz $ cd git-2.2.0 $ make prefix=/usr/local all $ make prefix=/usr/local install $ git --version git version 2.2.0 これでどうだ! // @clown0082 さん、GCC に関する編集リクエスト有難う御座いました m(_ _)m 途中の
stash便利ですよね git stashを使えば作業中のファイルを一旦退避させておいて、別のブランチで作業し、その後また戻ってきて再開するってことができますね。 $ git branch * original hogehoge master # 作業中のファイルを一旦退避 $ git stash # 退避できたか確認してみる $ git stash list # ブランチ変更 $ git checkout hogehoge $ ~hogehogeブランチでなんか開発作業~ # ブランチを元に戻す $ git checkout original # 退避を元に戻す $ git stash pop でもstashってtrackedなファイルだけなんでしょ・・・・ git stashだと追跡してる(tracked)なファイルだけを退避してくれます。 なので追跡してない(addしてない)ファイル
任意のブランチをmasterブランチにマージする前に、Jenkinsで静的分析やテスト実行をしたいというニーズがあったので、任意のブランチにpushしたら CIできるように設定をしてみました。 環境構成 OS: Amazon Linux AMI 2013.03 64bit Git: 1.7.4.5 Jenkins: 1.505 Jenkins設定 ジョブ設定 ビルドのパラメータ化 → パラメータの追加 → 文字列 下記のように、「名前」と「デフォルト値」を設定する ソースコード管理システム → Git → Branches to build 下記のように、「Branch Specifier (blank for default):」に先ほど設定した変数 $branch_name を設定 ただ単に、Jenkinsの画面で毎回ビルド実行をするだけでしたらこれで設定は終わりです。 あとは下記
AI & MLLearn about artificial intelligence and machine learning across the GitHub ecosystem and the wider industry. Generative AILearn how to build with generative AI. GitHub CopilotChange how you work with GitHub Copilot. LLMsEverything developers need to know about LLMs. Machine learningMachine learning tips, tricks, and best practices. How AI code generation worksExplore the capabilities and be
まとめ $ git diff --no-prefix HEAD~ > thisis.patch $ patch --dry-run -p0 < thisis.patch $ patch -p0 < thisis.patch git diffに--no-prefixをつける事で、普通のpatchで当てられるパッチファイルを出力できます。この例ではHEADの1個前*1からHEAD*2までのパッチです。 普通のpatchコマンドのほうの知識があまり無くて-p0がいまいちよく分からないんですが、git diff --no-prefixで作成したパッチファイルを当てるには必要みたいです。--dry-runは、実際には当てないけど当てた場合の結果を出力します。なので、まずは--dry-runで確認して、問題が無ければ実際にパッチを当てます。 エントリー書いた後に教えてもらった補足 patch -p1の
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く