月別アーカイブ: 2014年10月

Visual Studio 2013 Update 4 RCが公開されました

Visual Studio/TFS 2013 Update 4 RC Available | A Developer’s Life

In case you missed it, Visual Studio 2013 Update 4 RC (Release Candidate) is now available for download. Also, this is a “go-live” release which means you can use this update in production environments and there will be a supported upgrade path from the RC to the final release (RTM) version.

VS2013 のUpdate 4が公開されました。Go-LiveでRTMへのアップグレードパスも含まれているので、即投入できますね。

 

ダウンロードはこちらからどうぞ。

Download Microsoft Visual Studio 2013 Update 4 RC from Official Microsoft Download Center

 

Update 4の変更点はこちらからどうぞ。

Description of Visual Studio 2013 Update 4 RC

 

ざっと眺めた感じ、Premium以上の内容が多い感じはありますね。気になるところではこちらですかね。

  • Owin 3.0
    Owin 3.0 NuGet パッケージを使用するようにテンプレート パッケージが更新されます。Owin 3.0 リリース ノートを参照してください。

Owinもどんどん進化していくので、ちゃんと追っていかないといけませんね。

git-nowにてカレントブランチのnowコミットだけfixupするようにした


#!/bin/sh
PREFIX="from now"
MESSAGE="[${PREFIX}] `date +\"%Y/%m/%d %T\"`"
MAIN_BRANCH=${1:-master} # デフォルトは 'master'、第1引数で上書き可能
shift # 引数リストからメインブランチ名を除外
get_amend() {
if [ -z `git log –pretty=oneline –no-color -1 | cut -d " " -f 2- | grep "^\[${PREFIX}]"` ]
then
return 1
fi
local added_files=`git diff –name-only –cached`
for f1 in `git diff –name-only HEAD^ HEAD`
do
for f2 in $added_files
do
if [ $f1 == $f2 ]
then
return 1
fi
done
done
echo "–amend"
return 1
}
if [ $# -eq 0 ]
then
git add -u
git commit -m "${MESSAGE}"
elif [ $1 == "–compact" ]
then
git add -A
AMEND=`get_amend`
git commit $AMEND -m "${MESSAGE}"
elif [ $1 == "–recent" ]
then
git add -A
if [ -z "`git log –since=1.minute`" ]
then
git commit -m "${MESSAGE}"
else
git commit –amend -m "${MESSAGE}"
fi
elif [ $1 == "–fixup" ]
then
WORKING_BRANCH=`git branch -l | grep "*" | cut -d " " -f 2`
if [ $WORKING_BRANCH == $MAIN_BRANCH ]
then
FIRST_NOW_COMMIT=`git log –pretty=oneline –no-color –grep="${PREFIX}" | tail -n 1 | cut -d " " -f 1`
else
FIRST_NOW_COMMIT=`git log $MAIN_BRANCH.. –pretty=oneline –no-color –grep="${PREFIX}" | tail -n 1 | cut -d " " -f 1`
fi
git reset ${FIRST_NOW_COMMIT}
git add -A
if [ $# -eq 2 ]
then
git commit –amend -m "$2"
else
git commit –amend
fi
elif [ $1 != "–rebase" ]
then
if [ $1 != "–all" ]
then
git add $@
else
git add -u
git add .
fi
printf "${MESSAGE}\n\n%s" "`git diff –cached`" | git commit -F –
else
FIRST_NOW_COMMIT=`git log $MAIN_BRANCH.. –pretty=oneline –no-color –grep="${PREFIX}" | tail -n 1 | cut -d " " -f 1`
INITIAL_COMMIT=`git log $MAIN_BRANCH.. –pretty=oneline –no-color | tail -n 1 | cut -d " " -f 1`
if [ ${FIRST_NOW_COMMIT} != ${INITIAL_COMMIT} ]
then
git rebase -i ${FIRST_NOW_COMMIT}^
else
WORKING_BRANCH=`git branch -l | grep "*" | cut -d " " -f 2`
git checkout ${FIRST_NOW_COMMIT}
git commit –amend
git rebase –onto HEAD ${FIRST_NOW_COMMIT} ${WORKING_BRANCH}
fi
fi

view raw

git-now

hosted with ❤ by GitHub

 

問題

git-now --fixup

は内部で最初のgit-nowで作成したコミットを探す際、簡単にいえばログから最初のnowコミット(メッセージに”from now”が含まれるコミット)を抽出しています。しかし、これだとうっかりpushしてしまったコミットも含んで探してしまい、fixupしたくないところまでfixupしてしまいます。

 

対応

そこで、この問題の軽減として、フィーチャーブランチ上で作業しているときは、フィーチャーブランチに含まれるnowコミットだけをfixupしようと考えたわけです。

で、どうするか?

答えは「masterから分岐したコミットだけを対象としたログから最初のnowコミットを探す」です。そのために、git logを実行する際に

git log master..

のように「ログ取得対象のコミットを明示的に指定」してやります。上記の指定は、「masterからHEADまで」のログのうち、master部分のログを取り除いたものを取得できます。(参考:transitive.info – git log 使い方

 

こんなコミットグラフだっとします。

 

a-b <master>
   \
     c-d <*temp>

※<branchname>:ブランチ名(*はカレントブランチ)

コミットログを見るとこんな感じです。

$ git log --pretty=format:"%h %Cgreen%d%Creset %s"
cfeb93c (HEAD, temp) [from now] 2014/10/23 13:02:36
1f48b0d [from now] 2014/10/23 13:00:20
0a64b5f (master) [from now] 2014/10/23 12:46:36
b9656d0 [from now] 2014/10/23 12:46:25

ここで、master..を指定するとどうなるか?

$ git log --pretty=format:"%h %Cgreen%d%Creset %s" master..
cfeb93c (HEAD, temp) [from now] 2014/10/23 13:02:36
1f48b0d [from now] 2014/10/23 13:00:20

ご覧のようにmasterから分岐後の2つのコミットだけが取得できます。

この動作を利用したのが、今回の修正です。

 

なお

今回の記事を作成するにあたりこんな変更も加えました。

ASP.NET Identity入門 第6回が公開されました

CodeZineで連載中の「ASP.NET Identity入門」の第6回が公開されました。

 

ASP.NET Identity 2.0の新機能 ~メールを使ったアカウントの確認

 

前回に続いて、アカウントの確認の解説の完結編です。メールで何かしらの情報を送るのは大体同じ形なので、まずはアカウントの確認をしっかりと押さえておくとよいと思います。

GistSharpExtension:VS14に対応しました

GistSharpExtension

VS 14 CTPも4まで来たので、正式リリースより二足ほど先に対応しました。

 

残念ながらVS 14の拡張機能マネージャーに出す方法がわからなかったのですが、ダウンロードしたVSIXを開けば、次のように問題なくインストールできます。

 

image

 

VS 14でも快適なGistライフを!