• R/O
  • SSH
  • HTTPS

ttssh2: Commit


Commit MetaInfo

Revision4740 (tree)
Time2011-11-21 20:34:50
Author(del#1144)

Log Message

SVNリビジョンのチェック方法を変更

subversion 1.7 でチェックアウトすると .svn\entries からリビジョンを読み出せないため
win32svn の svnversion.exe を実行するように変更

Change Summary

Incremental Difference

--- trunk/teraterm/svnrev/svnrev.cpp (revision 4739)
+++ trunk/teraterm/svnrev/svnrev.cpp (revision 4740)
@@ -9,43 +9,27 @@
99
1010 using namespace std;
1111
12-// Get revision fron "entries" file.
13-int get_svn_revision(char *path) {
14- BOOL ret;
15- CStdioFile csf;
16- CString cs, filename;
17- int format = -1;
12+int get_svn_revision(char *svnversion, char *path) {
13+ FILE *fp;
14+ char command[MAX_PATH*2];
15+ char result[32];
1816 int revision = -1;
1917
20- filename = path;
21- if (filename.Right(1) != "\\") {
22- filename += "\\";
23- }
24- filename += ".svn\\entries"; // [top of source tree]\.svn\entries
25-
26- ret = csf.Open(filename, CFile::modeRead);
27- if (ret == FALSE) {
18+ // subversion 1.7 から .svn\entries のフォーマットが変わったため、
19+ // .svn\entries を直接読み込むのをやめ、
20+ // svnversion.exe コマンドを呼び出した結果を返す
21+ _snprintf_s(command, sizeof(command), _TRUNCATE, "%s -n %s", svnversion, path);
22+ if ((fp = _popen(command, "rt")) == NULL ) {
2823 return -1;
2924 }
3025
31- csf.SeekToBegin();
32-
33- // line 1
34- csf.ReadString(cs);
35- format = atoi(cs);
36-
37- if (format == 8 || format == 9 || format == 10) {
38- // skip line 2 name, 3 kind
39- csf.ReadString(cs);
40- csf.ReadString(cs);
41-
42- // line 4 revision
43- csf.ReadString(cs);
44- revision = atoi(cs);
26+ while(!feof(fp)){
27+ fgets(result, sizeof(result), fp);
28+ revision = atoi(result);
29+ break;
4530 }
31+ _pclose(fp);
4632
47- csf.Close();
48-
4933 return revision;
5034 }
5135
@@ -105,16 +89,17 @@
10589 int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
10690 {
10791 int revision = -1;
108- char *input, *output;
92+ char *svnversion, *input, *output;
10993
110- if (argc != 3) {
111- printf("USAGE: %s path output\n", argv[0]);
94+ if (argc != 4) {
95+ printf("USAGE: %s svnversion path output\n", argv[0]);
11296 return -1;
11397 }
11498
115- input = argv[1];
116- output = argv[2];
117- revision = get_svn_revision(input);
99+ svnversion = argv[1]; // svnversion.exe
100+ input = argv[2]; // top of source tree
101+ output = argv[3]; // output to
102+ revision = get_svn_revision(svnversion, input);
118103
119104 if (!write_svn_revesion(output, revision)) {
120105 return 1;
--- trunk/doc/ja/html/reference/develop.txt (revision 4739)
+++ trunk/doc/ja/html/reference/develop.txt (revision 4740)
@@ -16,6 +16,8 @@
1616 Cygwin 1.5.x (1.7.x は Windows 9x をサポートしていないので不可)
1717 ActivePerl 5.8 以上
1818 OpenSSL のコンパイル、ドキュメントファイルの文字コード・改行コード変換に必要です。
19+ Subversion for Windows (http://sourceforge.net/projects/win32svn/)
20+ ソースのチェックアウトに使った svn と互換性のあるバージョン
1921
2022
2123 ■ ライブラリ
Show on old repository browser