Visual Studio 2013でGit使用の場合にソリューションをZIPファイルにまとめる

なんか、TFSの場合余計なものが多くて必要なソリューションのファイルをzipに圧縮するのが面倒なようですが、Gitを使っていれば特に面倒が無く最新の必要なコミット済ファイルだけをzipファイルにまとめられます。

先ず前提として、Visual Studio 2013標準のGit ToolsでソリューションをGitでソース管理していること、Git for Windowsかmsys2のGitがインストールされていて、パスが通っていることです。

表示されていなければ、パッケージマネージャコンソールを表示させます。

SnapCrab_NoName_2015-3-14_15-51-19_No-00_01

次にパッケージマネージャーコンソールで、git --versionとして、gitが動作することを確認します。

SnapCrab_PiCalculation_2015-3-14_15-54-39_No-00

パッケージマネージャコンソールから、gitのarchiveコマンドでHEADのソースファイルをzipファイルにまとめます。

git archive --format=zip HEAD -o HEAD.zip

SnapCrab_PiCalculation_2015-3-14_15-57-28_No-00

ZIPファイルが出来ています。.gitignoreが正しく設定されていれば、レポジトリに余計なファイルなどそもそも無いはずなので、非常にクリーンなZIPファイルが作成できます。

Gitのarchiveコマンドの使い方ですが、詳しくは本家のドキュメントを見ていただくとして、簡単な使い方だけ説明しておきます。

–formatオプションでアーカイブの方式を選択します。zipであればzip形式でファイル化し、他にはtarボールを作るtarオプションも使用できます。tarを指定した場合tarボールしか作れませんので、xzで圧縮して、.tar.xzを作りたい場合には、以下のようにパイプを使います。

>git archive --format=tar HEAD | xz > HEAD.tar.xz

今の環境で実際にどの様な形式のファイルにまとめられるかは、以下のように-l/--listオプションで確認できます。

私のmsys2の環境では以下のようになりました。

> git archive -l
tar
tgz
tar.gz
zip

また、作成する圧縮ファイルのルートに一つフォルダを作って、その下にファイルを保存した場合には--profile=オプションを使用します。

git archive --format=zip --prefix=demo/ HEAD -o HEAD.zip

中身を見てみると、オプションで指定したディレクトリが作られ、その下にソースコードが格納されています。

> 7z l HEAD.zip

7-Zip [64] 9.38 beta  Copyright (c) 1999-2014 Igor Pavlov  2015-01-03

Listing archive: HEAD.zip

--
Path = HEAD.zip
Type = zip
Physical Size = 5946
Comment = 20bf5f45a6a2e90452e49bb2dfd16de332235719

   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2015-03-15 16:58:24 D....            0            0  demo
2015-03-15 16:58:24 .....         2518          692  demo\.gitattributes
2015-03-15 16:58:24 .....         2806         1408  demo\.gitignore
2015-03-15 16:58:24 .....          977          376  demo\HelloWorld.sln
2015-03-15 16:58:24 D....            0            0  demo\HelloWorld
2015-03-15 16:58:24 .....          182          136  demo\HelloWorld\App.config
2015-03-15 16:58:24 .....         2505          895  demo\HelloWorld\HelloWorld.csproj
2015-03-15 16:58:24 .....          282          176  demo\HelloWorld\Program.cs
2015-03-15 16:58:24 D....            0            0  demo\HelloWorld\Properties
2015-03-15 16:58:24 .....         1616          805  demo\HelloWorld\Properties\AssemblyInfo.cs
------------------- ----- ------------ ------------  ------------------------
2015-03-15 16:58:24              10886         4488  7 files, 3 folders

また、今ままで、HEADを指定しましたが、特定のコミットやタグを指定することも出来ます。また、以下のように引数に特定のディレクトリ、ファイルを指定し、それをのみをアーカイブファイルに格納することも出来ます。

git archive --format=zip --prefix=demo/ HEAD src Program.cs -o HEAD.zip

git archiveコマンドを使えば簡単にソリューションの内容をアーカイブファイルにまとめられます。

また、別のコンソールを開かなくてもパッケージマネージャコンソールを使えば、ソリューションのディレクトリをpwdとして、VSのウインドウの中でgitコマンドを使用することが出来るので、これも覚えておきましょう。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください