Commits

Takumi IINO committed 6847f4a

initial commit

  • Participants

Comments (0)

Files changed (4)

+===============================================
+TokyoMercurial #4.5 Mercurial Queues ハンズオン
+===============================================
+
+準備
+----
+課題を行う前にhgrcに次の項目を設定してください。
+
+::
+
+    [extensions]
+    mq =
+    [diff]
+    git = True
+    [mq]
+    secret = True
+
+課題内容
+--------
+- basic
+
+  - 基本編です。MQのコマンドを使いながらMQのチートシートを作成しましょう。
+
+- rewrite
+
+  - 履歴改変編です。シェルスクリプトを実行するとリポジトリと課題が表示されます。履歴改変を行い課題を解きましょう。
+
+- advance
+
+  - 発展課題です。いろいろ試してみましょう。
+
+reStructuredText
+----------------
+- `ReStructuredText 入門 <http://www.planewave.org/translations/rst/quickstart.ja.html>`_
+- `Online reStructuredText editor <http://rst.ninjs.org/>`_
+
+  - ThemeはNatureがオススメです!
+
+資料
+----
+- `TokyoMercurial#4.5 <http://connpass.com/event/486/>`_
+- `Mercurial Queues ハンズオン (TokyoMercurial#4.5) <https://docs.google.com/presentation/d/1VWUAHAoaxpso5toFD_DHwWYq3bgYmpQ3bpBvmzbJuxM/Edit>`_
+================
+Mercurial Queues
+================
+
+hg qnew
+-------
+新しいパッチを作成します
+
+::
+
+    hg qnew PATCH # PATCHという名前のパッチを作成
+    hg qnew PATCH -m "commit message" # コミットメッセージ付きでパッチを作成
+    hg qnew PATCH -m "commit message" FILE # FILEの変更点のみのパッチを作成
+
+hg qpop
+-------
+
+
+hg qpush
+--------
+
+
+hg qgoto
+--------
+
+
+hg qrefresh
+-----------
+
+
+hg qdiff
+--------
+
+
+hg qfinish
+----------
+
+
+hg qimport
+----------

rewrite/commitlog.sh

+#!/bin/sh
+
+rm -rf $(basename $0 .sh)
+hg init $(basename $0 .sh)
+(
+cd $(basename $0 .sh)
+
+cat << EOT > .hg/hgrc
+[extensions]
+mq =
+EOT
+
+touch file1; hg add file-a; hg commit -m "add file1"
+touch file2; hg add file-b; hg commit -m "add file2"
+touch file3; hg add file-b; hg commit -m "コミットログ間違えた"
+touch file4; hg add file-b; hg commit -m "add file4"
+touch file5; hg add file-b; hg commit -m "add file5"
+echo "課題" $(basename $0 .sh)
+echo "「コミットログ間違えた」というコミットログを"
+echo "「add file3」に変更してください"
+echo ""
+echo "ヒント:"
+echo "hg qimport -r REV"
+echo "hg qrefresh -e"
+
+)

rewrite/qpush-conflicts.sh

+#!/bin/sh
+
+rm -rf $(basename $0 .sh)
+hg init $(basename $0 .sh)
+(
+cd $(basename $0 .sh)
+
+cat << EOT > .hg/hgrc
+[extensions]
+mq =
+EOT
+
+echo "あいうえお" >> 50on.txt
+echo "かきくけこ" >> 50on.txt
+echo "さしすせそ" >> 50on.txt
+echo "たちつてと" >> 50on.txt
+echo "なにぬねの" >> 50on.txt
+hg add 50on.txt
+hg commit -m "add 50on.txt"
+sed -i -e 's/さしすせそ/ざじずぜぞ/g' 50on.txt
+hg qnew ZAZIZUZEZO.diff -m "dakuon"
+hg qpop
+sed -i -e 's/さしすせそ/サシスセソ/g' 50on.txt
+hg ci -m "katakana"
+
+echo "課題" $(basename $0 .sh)
+echo "hg qpushを行ってください。パッチの適用に失敗します。"
+echo ""
+echo "1.次のコマンドでリポジトリの状態を確認してください。"
+echo "hg qseries --summary"
+echo "hg diff"
+echo "hg qdiff"
+echo "hg status"
+echo ""
+echo "2.hg qrefreshを使って「サシスセソ」を「ざじずぜぞ」にする"
+echo "パッチを作成してください。"
+
+)