gitでは様々な方法でコミットログを書き換えることができます。 その一例としてコミットの順序を入れ替える方法を紹介します。 問題 とある新機能Xを追加することになったとしましょう。 まずはこの作業用のトピックブランチを作成します:
![gitでコミットの順序を入れ替える | Webシステム開発/教育ソリューションのタイムインターメディア](https://cdn-ak-scissors.b.st-hatena.com/image/square/d046b56659ed060537bdb83985a4be512799f011/height=288;version=1;width=512/https%3A%2F%2Fwww.timedia.co.jp%2Fwp-content%2Fuploads%2F2022%2F04%2F13140.png)
プルリクエスト(Pull Request)、とても便利な仕組みですよね。 マージがボタン一つでできますし、ソースコードレビューも格段にやりやすくなったと感じています。 私の所属しているプロジェクトでは、Bitbucketのプルリクエストを使ってソースコードレビューを行っています。 プルリクエストは、全体テストを一回手元で通してから送るのがマナー です。 そうでないと、レビューアーが問題なしと判断してマージボタンを押した後に、 デグレが発生しており、テストが一部通らなくなっているtypoがあって、そもそもコンパイルが通らない状態になっている といった問題が発覚することがあります。結構よく起こります。 もちろん、Jenkins等のCIツールを使っているので、問題はすぐに発覚します。 しかし、問題を修正するまではソースをpullできない状態になるわけで、他の開発者に迷惑をかけてしまいます。 「テ
発端 モナドの正体が分かると、 次はモナドを実装してみたくなるものです。 という訳で試しに Python でモナドを実装してみましょう。 別にどんな言語でも構わないのですが、 クロージャや部分適用が簡単に使えない言語では本質的でないところで苦労する羽目になるので、 今回は Python を使うことにしました。 なお、今回作成した Python によるモナドの実装は GitHub で公開中です。 方針 モナドの具体例で一番簡単なものは Maybe でしょう。 まずは Maybe を Python のクラスとして実装して、 そこから一般的なところを括りだして Monad クラスを作ることにしましょう。 モナドの構成要素は以下の3つです: 普通の値をモナドにラップするための型 m普通の値を m にラップするための関数 returnモナドでラップされた普通の値を取り出して処理を行う演算子 >>=
問題 今時の若者ならばHeroku等を利用して手早く Web アプリを作成・公開することが日常茶飯事です。 バックエンドもフロントエンドも今はフレームワークが充実していますから、 高度な処理を簡潔な記述で行うことができます。 しかし非同期処理となると話は別です。 例えばフロントエンドを作るとなると、まずjQueryを使うことになるでしょう。 jQuery は洗練された API で DOM 操作を簡単に行うことができますし、 非同期通信についても $.ajax を使えば煩雑なことほぼ知らずに済みます。 例えばWikipediaの検索フォームは入力補完が行われるようになっており、 検索フォーム文字が入力されると関連するページのタイトルが候補として表示されます。 このような処理を書くとなると以下のようなコードになるでしょう: var showCompletionMenu = function (
問題 シェル(ただし Bourne Shell 系に限る)はお友達です。 一見すると役に立たないように思えるコマンドでも、 組み合わせ次第で複雑な処理をこなすための道具になります。 例えば行毎に ID が記載されているファイル ids があったとしましょう。 各 ID を SHA1 ハッシュ値に置き換えたものが必要な場合、 以下のコマンドで生成することができます (SHA1 ハッシュ値の算出には shasum を使っています): cat ids | while read id do echo -n "$id" | shasum done | cut -d ' ' -f 1 >ids.sha1 このように、行単位で何か処理を行う場合には read を使います。 ちょっとしたことなら sed や awk で済ませられるのですが、 上記のように「行毎にコマンドを実行して云々」をやろうとすると無理
以前gitで一度行った変更をなかったことにする方法4つを紹介しましたが、 日常的に git を使用していると他にも様々な 「なかったことにしたい」「元に戻したい」 という状況に遭遇します。 そのひとつひとつについて対処方法を紹介していきます。 目次 問題1: ライブラリの新機能を試すためにあれこれ適当なコードを書いてみた。でももう要らない。問題2: トピックブランチをマージしたけど実はまだ不完全だった。マージをやり直したい。問題3: リリース後に発覚したバグ。原因は30日前に自分が行ったコミットだった。なかったことにしたい。問題4: 新しいコミットしようとして間違えてgit commit –amendで書き換えてしまった。元に戻したい。問題5: 色々作業していたら作業ディレクトリの内容が混沌としてきた。一度綺麗な状態にしたい。問題6: 作業ディレクトリにゴミファイルが溜まってきた。一度綺麗
Mercurialは、Merucurial拡張という拡張モジュールを使って、Merucrialの挙動をいろいろ拡張できるようになっています。 デフォルトのままだと使いにくいので、Mercurialを使う上で便利にしてくれる拡張を設定しておきましょう。 デフォルトでバンドルされているMercurial拡張は、Using Mercurial Extensionsにまとめられています。 今回はGit使いがMercurial使いに転職するときに、Gitで実現できたことをMercurialで実現するための、組み込み拡張、および、サードパーティ製の拡張について紹介します。 色づけしよう ブランチの確認、diff、パッチ等々、色づけされていないとつらいです。 というわけでGit同様に色づけしましょう。 Color Extensionはすでにバンドルされているので、.hgrcに次の記述を加えましょう。 こ
@t2y から Python Web フレームワークアドベントカレンダー の担当がパスされてきました。 僕は Python を使い始めて 1年ぐらいになるのですが、主にコマンドラインのアプリを作っていて Web アプリには手をつけていなかったので、アドベントカレンダーに合わせて触ってみることにしました。 Web アプリの題材には、以前 Rails + Google Maps API で作った地図投稿アプリを使うことにしました。 以前 Rails 1.1 の練習題材として作ったのですが、バージョンアップの影響で いつの間にか動かなくなってしまった残念なアプリです。 フレームワークには python のマイクロフレームワークの一つである Flask を、 実行環境には Google App Engine (以下、appengine)を使うことにしました。 環境の作り方 appengine の環
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く