Skip to content

Commit

Permalink
Merge pull request #319 from m-tmatma/feature/skip-create-githash-if-…
Browse files Browse the repository at this point in the history
…not-exists

環境変数 SKIP_CREATE_GITHASH が 1 にセットしている場合、githash.h の生成をスキップする
  • Loading branch information
m-tmatma authored Aug 5, 2018
2 parents 2f6f4e7 + 2f75ab0 commit 96ab230
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 0 deletions.
24 changes: 24 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
- [Visual Studio Community 2017](#visual-studio-community-2017)
- [Visual Studio Install options required](#visual-studio-install-options-required)
- [How to build](#how-to-build)
- [githash.h の更新のスキップ](#githashh-の更新のスキップ)
- [CI Build (AppVeyor)](#ci-build-appveyor)
- [ビルドの仕組み](#ビルドの仕組み)
- [ビルド成果物を利用する上での注意事項](#ビルド成果物を利用する上での注意事項)
Expand Down Expand Up @@ -42,6 +43,29 @@ More information: https://github.com/sakura-editor/sakura/issues/6
## How to build
Visual Studio Community 2017 で `sakura.sln` を開いてビルド。

### githash.h の更新のスキップ

sakura editor ではビルド時に git の commit hash 等の情報を githash.h というファイルに出力します。
ビルド時に commit hash 等を生成することでビルド済みのバイナリがどの commit hash を元にビルドされたか
簡単に判断できて便利なのですが、

バイナリが変化しないリファクタリングをしたときでも、commit hash 等の変更が原因でバイナリ一致しなくなります。
これだと検証が面倒になるので、ローカルビルドで githash.h が変化しない手段を提供します。

コマンドラインで環境変数 ```SKIP_CREATE_GITHASH``` を 1 に設定することにより commit hash の
更新処理をスキップすることができます。githash.h が存在しない場合には、この環境変数が設定されていても
githash.h を生成します。

コマンド実行例

```
set SKIP_CREATE_GITHASH=1
build-sln.bat Win32 Release
build-sln.bat Win32 Debug
build-sln.bat x64 Release
build-sln.bat x64 Debug
```

## CI Build (AppVeyor)

### ビルドの仕組み
Expand Down
15 changes: 15 additions & 0 deletions sakura/githash.bat
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,21 @@ if "%APPVEYOR_BUILD_URL_VALID%" == "1" (
set GITHASH_H=%OUT_DIR%\githash.h
set GITHASH_H_TMP=%GITHASH_H%.tmp

@rem set SKIP_CREATE_GITHASH=1 to disable creation of githash.h
@rem check if skip creation of %GITHASH_H%
set VALID_CREATE_GITHASH=1
if "%SKIP_CREATE_GITHASH%" == "1" (
set VALID_CREATE_GITHASH=0
)
if not exist "%GITHASH_H%" (
set VALID_CREATE_GITHASH=1
)

if "%VALID_CREATE_GITHASH%" == "0" (
@echo skip creation of %GITHASH_H%
exit /b 0
)

call :output_githash > %GITHASH_H_TMP%

fc %GITHASH_H% %GITHASH_H_TMP% 1>nul 2>&1
Expand Down

0 comments on commit 96ab230

Please sign in to comment.