なんか、TFSの場合余計なものが多くて必要なソリューションのファイルをzipに圧縮するのが面倒なようですが、Gitを使っていれば特に面倒が無く最新の必要なコミット済ファイルだけをzipファイルにまとめられます。
先ず前提として、Visual Studio 2013標準のGit ToolsでソリューションをGitでソース管理していること、Git for Windowsかmsys2のGitがインストールされていて、パスが通っていることです。
表示されていなければ、パッケージマネージャコンソールを表示させます。
次にパッケージマネージャーコンソールで、git --version
として、gitが動作することを確認します。
パッケージマネージャコンソールから、gitのarchiveコマンドでHEADのソースファイルをzipファイルにまとめます。
git archive --format=zip HEAD -o HEAD.zip
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コマンドを使用することが出来るので、これも覚えておきましょう。
コメント