タグ

gitに関するpepe_la_phewのブックマーク (16)

  • 巨大なリポジトリ を Git で上手く扱う方法 | Atlassian Japan 公式ブログ | アトラシアン株式会社

    git は、コードベースの発展過程を記録し、開発者間の協同作業を効率化する強力なツールです。でも、記録対象のリポジトリがとてつもなく巨大なものになったときは何が起こるのでしょうか? この記事では、いくつかの異なる意味での巨大化に正しく対処するためのアイデアと手法を少し紹介してみたいと思います。 二種類の 巨大なリポジトリ よく考えてみると 巨大なリポジトリ が生ずる理由はおおまかに言って二つあります: 非常に長い期間にわたって履歴が積み上げられた (プロジェクトが非常に長い期間継続的に拡大を続けたために開発成果が積み重なった) 場合 巨大でしかも履歴の記録が必要なバイナリ データが存在し、それがコードに反映される場合 その両方の場合 即ち、リポジトリの巨大化は二つの異なる方向に向かって起こることになります。それは、作業ディレクトリのサイズ (即ち直近のコミットのサイズ) の問題と全体の履歴

    巨大なリポジトリ を Git で上手く扱う方法 | Atlassian Japan 公式ブログ | アトラシアン株式会社
  • もう巨大なデータをgitignoreしなくていい! ~git-mediaの使い方~ - 3度の飯と最新技術

    はじめに gitはコミットごとにレポジトリ内のファイル全てをスナップショットとして保存するというリッチな 設計になっている。 それがgitの便利さの所以なのだが画像データや音声データのようなバイナリデータを持とうとすると 少しの変更でもそのたびにコピーが生じてファイルサイズ分の容量が増えることになり、あっという間にレポジトリが 肥大化してしまう。 特に学習結果をファイルに保持してテスト等に使いまわすようなプログラムを管理しようとすると アルゴリズムのパラメータを少し変えるたびに100kB近い容量が増えていき、実にイケてない。 普通なら.gitignoreに*.xmlと書いてデータ自体は手動管理したり、シンボリックリンクにして別ディレクトリに置いてそれだけrsyncで同期するようにしたりするんだが 過去の実験時の状態に戻れなかったり、毎回rsyncするのは不便だった。 なんか無いかなーと思っ

    もう巨大なデータをgitignoreしなくていい! ~git-mediaの使い方~ - 3度の飯と最新技術
  • Gitが連想配列記憶装置であることを低レイヤーな操作を通して体感しよう! - Qiita

    誤解を恐れずに言えば、Gitとは一つの連想配列ストレージシステムです。 かっこよく言うと Key Value Storeです。 Gitがやっていることの質は、あなたのコンテンツを圧縮してDBに保存し、あなたの要求に応じてDBから取り出して解凍する、ただそれだけです。 具体的には KVSでのsetにあたる命令がgit add,git commit KVSでのgetにあたる命令がgit checkout です。 そしてデータベースとは.git/object/ ディレクトリ配下にあるファイル群のことです。 さて今回はgit checkoutコマンドを使わずに低レイヤーなコマンドだけを使って同じことを実現してみましょう。 準備 新規レポジトリを作成して、"hello world"と書かれたファイルをコミットします。 git init dqneo echo hello world > hello.

    Gitが連想配列記憶装置であることを低レイヤーな操作を通して体感しよう! - Qiita
  • Git submodule の基礎 - Qiita

    この記事は Git Advent Calendar 6日目の記事です! Git submodule って最初わかりにくいと思うので、基的な説明をしようと思います。 git submodule とは git submodule は、外部の git リポジトリを、自分の git リポジトリのサブディレクトリとして登録し、特定の commit を参照する仕組みです。 Subversion でいうところの、external と似ています。 さて、解説のため、手元に、リポジトリA (/path/to/a) とAの submodule として、よく使う例として Bootstrap (元Twitter Bootstrap) を登録してみます。 git submodule を理解するうえで重要なのは、 リポジトリAが指し示すsubmoduleとしてのBootstrapのcommit 現在のBootstr

    Git submodule の基礎 - Qiita
  • Git の仕組み (1) - こせきの技術日記

    目次 はじめに Git を使ったことがない方へ 生のデータが見たい方へ Git の全体像 .git の中身 Git オブジェクトデータベース 4種類のオブジェクト リファレンス リファレンスのリファレンス 大きなツリー Git オブジェクトの ID と 中身 ハッシュ関数 SHA1 の簡単な説明 tree と blob オブジェクト tree と blob の参照関係 ルートツリーの ID でツリー全体を識別する commit オブジェクト リファレンスとブランチランチランチ先頭を指すリファレンス HEAD リファレンス detached HEAD 2種類のタグ 一時待避 (stash) インデックス キャッシュとしての役割 マージ Fast-Forward マージ non Fast-Forward マージ rebase reset 2種類のブランチ 各リポジトリが自分のブランチ

    Git の仕組み (1) - こせきの技術日記
  • ちょっと待った! Railsのgitリポジトリから Gemfile.lockとdb/schema.rbを除外してはいけない|TechRacho by BPS株式会社

    2014.02.07 ちょっと待った! Railsのgitリポジトリから Gemfile.lockとdb/schema.rbを除外してはいけない こんにちは、hachi8833です。 Railsをgitで管理するのであれば、ログファイルや、パスワード入りdatabase.ymlなどの登録したくないファイルを.gitignoreに記載してリポジトリから除外するのが普通です。しかし実際の案件では、除外すべきでないファイルが除外されていることがたまにあります。言うまでもないような話ですが、心当たりのある方は念のためチェックしてみましょう。 gitリポジトリから除外すべきでないファイル 以下では、誤ってgitリポジトリから除外されがちなGemfile.lockとdb/schema.rbについて説明します。代表的なものであり、すべてを網羅しているわけではないのでご注意ください。 Gemfile.lo

    ちょっと待った! Railsのgitリポジトリから Gemfile.lockとdb/schema.rbを除外してはいけない|TechRacho by BPS株式会社
    pepe_la_phew
    pepe_la_phew 2014/05/18
    やば、何も考えずbundle updateしてた。
  • mg ☂. » [git] gitのtagをリモートにpushする

    ローカルでタグをつける $ git tag v0.9 リモートに反映させる $ git push origin v0.9 まとめてリモートに反映させる $ git tag v1.0a : : : $ git tag v1.0b : : $ git tag v1.0rc リモートに push してないタグを全て反映させる $ git push origin --tags 過去に遡ってタグをつける $ git log --pretty=oneline bc485f2e49740e7d2ad62e08b785117a3bb958d7 beta ade7a116ecabd0623ca04ece5f5496c06e3c1c55 preview e1fec3d88263a28402d70212a06da9a62fd19146 rc $ git tag v1.0pre ade7a116 なるほど

  • Git で Jenkins のバックアップをしてみる - 適当めも

    先日突然会社で使ってる Jenkins が起動しなくなってしまいました。さすがにもう二度とそんな思いはしたくないので、バックアップを取ることにしました。 Backup Plugin - Jenkins - Jenkins Wiki を使ってもいいんですが、git 使えば差分バックアップになるし、好きな時点に戻せて素敵なんじゃないかと思って git を使ってバックアップを取ることにしてみました。 この記事はその時のメモみたいなものです。 リポジトリの作成 まずは git のリポジトリを作ります。せっかくなのでスクリプトコンソールを使ってみます。スクリプトコンソールを開いて、以下を実行します。 dir = System.properties["JENKINS_HOME"] def git = { Object[] cmd -> println new ProcessBuilder(["git"

    Git で Jenkins のバックアップをしてみる - 適当めも
  • Redmine で別サーバーにある git リポジトリーを参照する

    Redmine はローカル・マシンにあるリポジトリーしか参照できない。なので、Redmine 用のサーバーとリポジトリー用のサーバーを分けて運用している場合、チケットとコミット・ログを紐付けることができない。 これは不便なので、公開リポジトリーに commit したら Redmine サーバーにデータを転送するようにした。 なお、掲題の通り今回は git リポジトリーを扱う。 設定 Redmine を動かしているサーバーを server_redmine と呼ぶ。 Git の公開リポジトリーを置いているサーバーを server_git と呼ぶ。リポジトリーは /var/git/sample.git にあるとする。 ssh ログインの準備 server_git から server_redmine へ ssh ログインできる様に設定をしておく。 clmemo@aka: SSH の公開鍵暗号方式に

  • こわくない Git

    8. コミットに入ってる情報 リビジョン (SHA-1 ハッシュ) 例: 23cdd334e6e251336ca7dd34e0f6e3ea08b5d0db Author (コミットを作成した人) 例: オープンソースプロジェクトにパッチを送った人 Committer (コミットを適用した人) 例: 受け取ったパッチを取り込んだ人 ファイルのスナップショット (tree) コミットで変更されたファイルを含むツリー(説明は省略) 1つ前のコミットのリビジョン 例: 4717e3cf182610e9e82940ac45abb0d422a76d77 9. コミットに入ってる情報 リビジョン (SHA-1 ハッシュ) 例: 23cdd334e6e251336ca7dd34e0f6e3ea08b5d0db Author (コミットを作成した人) 例: オープンソースプロジェクトにパッチを送った人 Co

    こわくない Git
  • C/C++言語 開発環境

    gistfile1.md Windows/Linuxで両方で動作する成果物を想定。 有償のツールは理解が得られる方が稀なので除外。 仕様書 外部仕様 Word/Excelが手軽だけど差分が追いにくい。 Markdown+PandocかSphinxでPDF提出がいいかな? Pandoc - About pandoc Sphinx-Users.jp :: ドキュメンテーションツール スフィンクス Sphinx-users.jp 内部仕様 きちんと書いてあればDoxygenで十分だと思う。 Cしか対応していないみたいだけどdocuriumの方がgitとの親和性が高くて(tag付された結果をまとめて解析してくれるみたい)出力結果も今風にできてる。 Doxygen github/docurium インセプションデッキ 作っておくと上司/部下/協力メンバで方針を合わせやすい。 ネスケラボ » インセプ

    C/C++言語 開発環境
  • 内部構造から見るGit - Qiita

    こんにちは@a_suenamiと申します。 これはGit Advent Calendar 2012の17日目の記事になります。 前日はid:akiyokoさんのGitコマンド総選挙でした。 Gitの内部構造 みなさんはGitがどういう風にデータを管理しているか意識したことはありますか? コマンドの使い方に関するTipsはよく見かけるのですが、なかなかデータ構造に着目した解説は少ないのが実情かと思います。 そこで日は僕が以前社内で行ったGit勉強会の話をもとにして、Gitの内部でどのようなデータがやりとりされているのかという話をしたいと思います。以下が以前僕が社内で勉強会をしたときの資料です。 http://www.slideshare.net/asuenami/git-15199548 タイトルの通り、非プログラマ向けの内容なのですが、PART2ではGitの内部構造を擬人化して説明すると

    内部構造から見るGit - Qiita
  • それ etckeeper でできるよ - /etc 以下を Git で自動的にバージョン管理 - おいちゃんと呼ばれています

    こんにちはこんにちは。一昨日、さくら VPS に Git をインストールするエントリーを書きましたが、実はバージョン管理は etckeeper にもお世話になっています。 etckeeper というのは、Git 等のバージョン管理ツールを用いて、/etc 以下をほぼ自動的に管理してくれる有り難いツールです。下記のタイミングで自動的にコミットしてくれます。手動で任意のタイミングでコミットすることもできます。 -yum コマンド実行の前後 -日付が新しくなったとき << 以下、さくら VPS(CentOS 5.5 -64bit)で etckeeper を使えるようになるまでの手順をまとめてみましたので、よろしければ参考にしてください。 *目次 Git のインストール etckeeper のダウンロード etckeeper の設定ファイルの編集 etckeeper のインストール etckeep

    それ etckeeper でできるよ - /etc 以下を Git で自動的にバージョン管理 - おいちゃんと呼ばれています
    pepe_la_phew
    pepe_la_phew 2013/06/02
    まずコレを実行
  • ほげめも: etckeeper で多数のホストの /etc を集約・共有する

    etckeeper で多数のホストの /etc を集約・共有する etckeeper を使うと /etc の内容と変更履歴を git などのバージョン管理システム (VCS) で手軽に管理できますが、素の etckeeper には /etc の変更をローカルのリポジトリにコミットする機能しかなく、git のような分散 VCS の特徴を生かすことができません。 しかしながら etckeeper と git の組み合わせで、リモートリポジトリとブランチをうまく設定し一工夫を加えることで、多数のホストの /etc の変更をひとつのリポジトリに集約し共有することが簡単にできるようになります。 準備 まずは etckeepr を git で動かしてください。 Debian squeeze では apt-get install etckeeper とするだけで gitetckeeper がインス

  • A successful Git branching model » nvie.com

    Note of reflection (March 5, 2020) This model was conceived in 2010, now more than 10 years ago, and not very long after Git itself came into being. In those 10 years, git-flow (the branching model laid out in this article) has become hugely popular in many a software team to the point where people have started treating it like a standard of sorts — but unfortunately also as a dogma or panacea. Du

    A successful Git branching model » nvie.com
  • Vendor branches in git

    Recently, I’ve been playing with git. It’s been pretty good so far. There are two things that have really impressed me: The subversion integration with subversion via git-svn is superb. I’m busy coding in git and I can just push all my changes back into subversion with nobody knowing I’m doing anything different. The visualisation provided by gitk is wonderful. One of our projects at work has abou

    pepe_la_phew
    pepe_la_phew 2013/05/13
    サードパーティのコードをgitで管理、自分でもコードを変更する可能性がある場合のブランチの使い方
  • 1