タグ

gitに関するkomlowのブックマーク (117)

  • 脱ブランチファースト - 日々常々

    あるいは「プルリクエストをやめてみた」 チーム構成とかにもよるんだろうけど。Gitかつフォークされないプロダクトでの話です。OSSとかは全然話は変わります。 問題とアプローチ (2019-10-25T15:20 追加) 表出している問題と、ここでのアプローチを書いておきます。 ブランチファースト(造語) 「ブランチファースト」はこのエントリでの造語です。コードベースに変更を加える際に「まずブランチを作成する」から始めることを指します。 作業単位でブランチを作成、ブランチでコードを変更してプルリクエスト、レビューを経てメインライン( master ブランチ)に反映までがブランチファーストのスコープになります。 よくあるスタイルだと思いますし、ブランチだけ作成して変更せずプルリクエストを作成する拡張もありますね。 プルリクエストを挟まずにメインラインにマージするものは含みません。 ……名前微妙

    脱ブランチファースト - 日々常々
    komlow
    komlow 2019/10/25
  • Building Git – shop.jcoglan.com

    717 pages (PDF) 177,000 words Table of contents Buy now – £36 Looking for a license for your team or company? Contact me at james@jcoglan.com. Product information Building Git is a deep dive into the internals of the Git version control system. By rebuilding it in a high-level programming language, we explore the computer science behind this widely used tool. In the process, we gain a deeper under

    Building Git – shop.jcoglan.com
    komlow
    komlow 2019/04/12
  • Gitはどうやってテキストファイルとバイナリファイルを自動識別しているのか? - Qiita

    tl;dr 先頭 8000 バイト以内に NUL が有ったらバイナリファイル。 Gitの実装 Gitの内蔵diffは FIRST_FEW_BYTES だけ検索するようになっている。 https://github.com/git/git/blob/6e0cc6776106079ed4efa0cc9abace4107657abf/xdiff-interface.c#L187 #define FIRST_FEW_BYTES 8000 int buffer_is_binary(const char *ptr, unsigned long size) { if (FIRST_FEW_BYTES < size) size = FIRST_FEW_BYTES; return !!memchr(ptr, 0, size); }

    Gitはどうやってテキストファイルとバイナリファイルを自動識別しているのか? - Qiita
    komlow
    komlow 2019/04/04
  • The Architecture of Open Source Applications (Volume 2): Git

    The Architecture of Open Source Applications (Volume 2) Git Susan Potter 6.1. Git in a Nutshell Git enables the maintenance of a digital body of work (often, but not limited to, code) by many collaborators using a peer-to-peer network of repositories. It supports distributed workflows, allowing a body of work to either eventually converge or temporarily diverge. This chapter will show how various

  • 本の虫: GCCの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のメモリ

    komlow
    komlow 2018/08/01
  • Linus Torvalds氏によるGitの内部構造の解説 - Qiita

    初めに LinusによるGitのinitial commitのREADMEの訳です。 社内のSVNからの移行を促すために資料を整備していたのですが、SVNでやっていたことを移し替えたりコマンドを覚えたりするより内部構造を知ったほうが早いことに気づきました。 それで、gitの内部構造についての解説資料を色々見ていたのですが、データ構造については原作者のこのREADMEに言い尽くされている気がします。のみならず、gitを使うものが抱くべき精神性のようなものが示されており、深い感銘を覚えました(ヒャッハー)。 README: ”GIT - 馬鹿コンテンツトラッカー” コミットメッセージ:git, 地獄からきたインフォメーションマネージャ gitの意味 "git" は何を意味することも出来る、お前の気分次第だ。 3文字で、発音可能で、実際のUNIXシステムで共通コマンドとして使われていないものであ

    Linus Torvalds氏によるGitの内部構造の解説 - Qiita
    komlow
    komlow 2017/11/04
  • Git 爆弾 - Frasco

    もしあなたが冒険好きな人なら(そして起こるかもしれない再起動に対処できる人なら)、この小さなリポジトリをクローンしてください: $ git clone https://github.com/Katee/git-bomb.git クローンできましたか?あなたのマシンが相当なメモリ(RAM とストレージ合わせて)を積んでいない限り、git が殺されたか、メモリ不足になったか、再起動しなければならなかったと思います。なぜでしょう?これは、たった12個のオブジェクトで構成されたリポジトリです。 どのようにして、この小さなリポジトリがメモリ不足を起こすのでしょうか?その秘密は、git が行う blobs(ファイルを保存しておくもの)の de-duplication(重複排除)です。これは、リポジトリを小さく、そしてコミット間でファイルが変更されていない場合に同じ blob を使うようにするためのもの

    Git 爆弾 - Frasco
    komlow
    komlow 2017/10/26
  • Finding out the version of git on remote server

    komlow
    komlow 2017/04/28
  • Better Git configuration

    I like Git. I use it all the time. As I sometimes do, I recently took some time to really dig in, read through documentation, and review my global Git configuration. Welcome to my fourth stack improvements post! It’s all Git I started coding in the bad old days of plain filesystem copies and Visual SourceSafe with its exclusive locks on checkout. Even so, back then the concept of source control wa

    Better Git configuration
    komlow
    komlow 2017/04/07
  • Gitのステージング領域の正体を探る | メルカリエンジニアリング

    ソフトウェアエンジニアの @DQNEO です。こんにちは。 Gitの内部構造を深掘りするシリーズ3回目です。 前回までのお話はこちら Gitのつくりかた – Mercari Engineering Blog Gitのコミットハッシュ値は何を元にどうやって生成されているのか – Mercari Engineering Blog 今日はみんなだいすき「ステージング領域」の中身について解説してみます。 ステージング領域とは何か? 簡単に説明すると「次にコミットしたときにコンテンツとして登録されるもの」リストです。(別名「インデックス」ともいいます。) このリストは、 git addやgit rmしたときに書き換わります。 (古くはcacheと呼ばれていました。内部実装やgit diff --cachedに今もその名残があります。) git addのマニュアルに説明があります。 Git – git

    Gitのステージング領域の正体を探る | メルカリエンジニアリング
    komlow
    komlow 2017/04/07
  • なぜあなたのPull Requestは読まれないのか - Qiita

    Pull Requestを出してレビューしてもらってから反映。 どこにでもあるありふれた開発フローに付きまとう、どこにでもあるありふれた問題。 「Pull Requestがレビューされない」 もちろん開発フローにレビューが含まれている以上、レビューをしないメンバーにも非がないとは言えませんが、多くの場合はレビューされないPRには問題があるものです。 デカい 兎にも角にもデカいPRは読むのがつらいです。 もちろん要件が明記されていないなど、他にもPRが読みにくくなる原因はたくさんありますが、一番はこれです。 極端な話、1行変更のPRは他に何も書かれていなくても実装内容を察することができますが、10ファイル100行の差分と箇条書き20点の要件が書かれたPRは内容を把握するだけで一苦労です。 しかし、このこと自体は数カ月でもコードを書いていれば自然と勘づくもの。 問題はなぜPRが大きくなってしま

    なぜあなたのPull Requestは読まれないのか - Qiita
  • Understanding Git Filter-branch and the Git Storage Model - In Pursuit of Laziness

    The other day Steve wanted git alchemy done on the Rust repo. Specifically, he wanted the reference and nomicon moved out into their own repositories, preserving history. Both situations had some interesting quirks, the reference has lived in src/doc/reference/* and src/doc/reference.md, and the nomicon has lived in src/doc/nomicon, src/doc/tarpl, and at the top level in a separate git root. As yo

    Understanding Git Filter-branch and the Git Storage Model - In Pursuit of Laziness
    komlow
    komlow 2017/03/06
  • Git Virtual File System

    Microsoft/GVFS : https://github.com/Microsoft/GVFS.git WindowsでのGitが余りにも遅いと言われるからか、MSがGit用の仮想ファイルシステムを作り始めてしまったようです。 簡単に言うと、GVFSを使ってCloneすると実際にはその時点では実際には何も落ちてきていなくて、必要なときに必要なファイルだけダウンロードするので、「遅い」ローカルファイルに多数のファイルが実施には無く、Gitコマンドとのやりとりは実際のファイルシステムでは無く、GVFSが受け持つので、Gitのチェックアウトやステータスコマンドのレスポンスが向上するという仕組みのようです。 この仕組みだけ読むと、ローカルでビルドしようとしたら全部のオブジェクトをダウンロードしてしまうので、結局いつも通りなのでは?と言おう疑問がわくのですが、どうなんですかね。ただ実際のところ

    Git Virtual File System
  • git blameによるSRP(単一責任原則)の定量化 - どこでも見れるメモ帳

    はじめに ソースコードを静的解析することでSRP(単一責任原則)を定量的に算出します.*1 svn blameによるSRP算出*2を参考に、git blameによる算出をshで行ってみました. このSRP値が最大のモジュールが王様モジュールに相当します. # 単一責務性の違反指数(SRP) # SRP=R+U+((L/100)-5) # R:修正リビジョンのユニーク数 # U:修正ユーザのユニーク数 # L:モジュールのライン数 function get_SRP() { local target_filepath=$1 echo $(( \ $(git --no-pager blame --line-porcelain $target_filepath | sed -n 's/^summary //p' | sort | uniq -c | sort -rn | wc -l) + \ $(

    git blameによるSRP(単一責任原則)の定量化 - どこでも見れるメモ帳
    komlow
    komlow 2016/04/19
  • git push --force でなく git push --force-with-lease を使う - valid,invalid

    前に社内チャットで流れてて初めて知った。 他人の変更を上書きするおそれのある git push --force でなく、最後に fetch したタイミング以降に他人が push していたら失敗する git push --force-with-lease を使う方が良い。 --force considered harmful; understanding git's --force-with-lease - Atlassian Developers Quipper では GitHub flow のような開発フローを採用している。 各開発者が feature branch を作成し、master / develop branch へ pull request を作る流れだ。 他人と修正箇所が重なってコンフリクトした際には rebase が必要で、 rebase 後の内容を push する際には

    git push --force でなく git push --force-with-lease を使う - valid,invalid
    komlow
    komlow 2016/04/05
  • Work in ProgressパターンによるPull Requestを利用した開発フロー - Qiita

    はじめに ソースコード管理ツールとしてGitlabGithubを導入することで、ソースコードのバージョン管理に加えて、コードの変更前にコードレビューを実施するPull Requestを簡単に行うことができる。コードレビューの観点や手法は様々であるが、レビューを実施する前に幾つかのコンテキストをレビュー担当者とレビュー依頼者が共有しておくことでスムーズなコードレビューが期待される。 文章ではWork in Progressパターンと呼ばれる手法を利用した、コードレビュー前のコンテキストの共有方法を紹介する。 コンテキストの共有 コードレビューを実施する前に幾つかのコンテキストを共有することは、レビュー担当者の負担削減や、レビューの品質向上またレビュー依頼者のタスクの明確化に繋がる。共有するべきコンテキストの一例として以下の物が挙げられる。 実装する機能の詳細設計 実装する機能の仕様 実装

    Work in ProgressパターンによるPull Requestを利用した開発フロー - Qiita
  • Gitコミットメッセージの7大原則 - rochefort's blog

    タイトルは大げさです。割と当たり前の話です。 ハードディスクの整理中にRailscastsのメモが出てきまして 懐かしいなぁ、 Ryan Bates(@rbates)さん 元気かなぁと Twitterを覗いてみたところ How to write a Git commit message: http://t.co/D31dVh1lks— Ryan Bates (@rbates) 2015, 7月 28 なかなか興味深い記事をtweetされていました。 Git の commit messageに 規律をもたらそうぜ、ってのは どうやら日人だけじゃないようです。 元記事( How to Write a Git Commit Message ) Introduction 著者の過去と現在のcommit logを対比しています。 一貫して、この緑と赤の対比が見やすいので、記事も読みやすいです。 ま

    Gitコミットメッセージの7大原則 - rochefort's blog
  • Gitのデータモデル

    近藤です。こんにちは。Gitは様々な利用の仕方ができますが、その基盤となるモデルは8個だけの簡単なモデルです。これらのモデルを理解していない状態でGitを利用すると、あたかもリポジトリが壊れたように見えてしまいます。Gitは難しいと言われますが、そういう感想を持つ人はGitのモデルを理解していない事が多いようです。 今回はGitを構成する中心モデルと、基的なコマンドを実行した時のオブジェクト関係を解説します。 基概念 Gitの基概念は大きく2つにわかれます。 GitObject Reference GitObjectはGitで管理するオブジェクトです。CommitなどがGitObjectです。Gitリポジトリである.gitを開くとobjects配下にあるファイルがGitObjectです。GitObjectはそのコンテンツをハッシュ化した文字列を元に、先頭2文字で配置フォルダ、残りの文

    Gitのデータモデル
    komlow
    komlow 2015/07/17
  • GitHub - karupanerura/c-git-git: git git git git git git git git status

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - karupanerura/c-git-git: git git git git git git git git status
    komlow
    komlow 2015/04/06
    便利そう
  • 8 Small git tips · Rodrigo Flores's Corner

    As git is one of my daily tools, I've compiled 8 useful (and short) tips that I use almost everyday. Selectively add with -p When you want to commit something, you can either: select all the files through git commit -am or add a specific file through git add file. However, you may want to only add only a part of a file to the commit. You can use git add -p and select interactively what parts you w

    komlow
    komlow 2015/04/02