{"thread":{"id":"20664","subject":"[PATCH 01/12] Avoid declaration after instruction","startedAt":"2009-08-19T15:52:36Z","lastAt":"2009-08-19T15:59:42Z","messageCount":12,"participants":["Frank Li","Erik Faye-Lund"],"isPatch":true,"patchVersion":1,"patchTotal":12},"messages":[{"id":"121257","messageId":"1250697167-5536-1-git-send-email-lznuaa@gmail.com","threadId":"20664","inReplyTo":null,"subject":"[PATCH 01/12] Avoid declaration after instruction","fromName":"Frank Li","fromEmail":"lznuaa@gmail.com","sentAt":"2009-08-19T15:52:36Z","receivedAt":"2009-08-19T15:52:36Z","isPatch":true,"sender":{"key":"lznuaa@gmail.com","avatar":"https://avatars.githubusercontent.com/u/40642?v=4"},"body":"Microsoft Visual C++ does not understand this C99 style\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\n---\n compat/mingw.c |   16 ++++++++++++----\n help.c         |    3 ++-\n run-command.c  |    2 ++\n 3 files changed, 16 insertions(+), 5 deletions(-)\n\ndiff --git a/compat/mingw.c b/compat/mingw.c\nindex bed4178..75c74b1 100644\n--- a/compat/mingw.c\n+++ b/compat/mingw.c\n@@ -123,13 +123,17 @@ int mingw_open (const char *filename, int oflags, ...)\n {\n \tva_list args;\n \tunsigned mode;\n+\tint fd;\n+\n \tva_start(args, oflags);\n \tmode = va_arg(args, int);\n \tva_end(args);\n \n \tif (!strcmp(filename, \"/dev/null\"))\n \t\tfilename = \"nul\";\n-\tint fd = open(filename, oflags, mode);\n+\n+\tfd = open(filename, oflags, mode);\n+\n \tif (fd < 0 && (oflags & O_CREAT) && errno == EACCES) {\n \t\tDWORD attrs = GetFileAttributes(filename);\n \t\tif (attrs != INVALID_FILE_ATTRIBUTES && (attrs & FILE_ATTRIBUTE_DIRECTORY))\n@@ -580,10 +584,11 @@ static char **get_path_split(void)\n \n static void free_path_split(char **path)\n {\n+\tchar **p = path;\n+\n \tif (!path)\n \t\treturn;\n \n-\tchar **p = path;\n \twhile (*p)\n \t\tfree(*p++);\n \tfree(path);\n@@ -1108,9 +1113,11 @@ int sigaction(int sig, struct sigaction *in, struct sigaction *out)\n #undef signal\n sig_handler_t mingw_signal(int sig, sig_handler_t handler)\n {\n+\tsig_handler_t old;\n+\n \tif (sig != SIGALRM)\n \t\treturn signal(sig, handler);\n-\tsig_handler_t old = timer_fn;\n+\told = timer_fn;\n \ttimer_fn = handler;\n \treturn old;\n }\n@@ -1197,8 +1204,9 @@ struct dirent *mingw_readdir(DIR *dir)\n \n \tif (dir->dd_handle == (long)INVALID_HANDLE_VALUE && dir->dd_stat == 0)\n \t{\n+\t\tDWORD lasterr;\n \t\thandle = FindFirstFileA(dir->dd_name, &buf);\n-\t\tDWORD lasterr = GetLastError();\n+\t\tlasterr = GetLastError();\n \t\tdir->dd_handle = (long)handle;\n \t\tif (handle == INVALID_HANDLE_VALUE && (lasterr != ERROR_NO_MORE_FILES)) {\n \t\t\terrno = err_win_to_posix(lasterr);\ndiff --git a/help.c b/help.c\nindex 6c46d8b..399b0b4 100644\n--- a/help.c\n+++ b/help.c\n@@ -127,7 +127,7 @@ static int is_executable(const char *name)\n \t\treturn 0;\n \n #ifdef __MINGW32__\n-\t/* cannot trust the executable bit, peek into the file instead */\n+{\t/* cannot trust the executable bit, peek into the file instead */\n \tchar buf[3] = { 0 };\n \tint n;\n \tint fd = open(name, O_RDONLY);\n@@ -140,6 +140,7 @@ static int is_executable(const char *name)\n \t\t\t\tst.st_mode |= S_IXUSR;\n \t\tclose(fd);\n \t}\n+}\n #endif\n \treturn st.st_mode & S_IXUSR;\n }\ndiff --git a/run-command.c b/run-command.c\nindex ff3d8e2..d1df7ab 100644\n--- a/run-command.c\n+++ b/run-command.c\n@@ -123,6 +123,7 @@ int start_command(struct child_process *cmd)\n \t\texit(127);\n \t}\n #else\n+{\n \tint s0 = -1, s1 = -1, s2 = -1;\t/* backups of stdin, stdout, stderr */\n \tconst char **sargv = cmd->argv;\n \tchar **env = environ;\n@@ -186,6 +187,7 @@ int start_command(struct child_process *cmd)\n \t\tdup2(s1, 1), close(s1);\n \tif (s2 >= 0)\n \t\tdup2(s2, 2), close(s2);\n+}\n #endif\n \n \tif (cmd->pid < 0) {\n-- \n1.6.4.msysgit.0\n"},{"id":"121258","messageId":"1250697167-5536-2-git-send-email-lznuaa@gmail.com","threadId":"20664","inReplyTo":"1250697167-5536-1-git-send-email-lznuaa@gmail.com","subject":"[PATCH 02/12] Define SNPRINTF_SIZE_CORR=1 for Microsoft Visual C++","fromName":"Frank Li","fromEmail":"lznuaa@gmail.com","sentAt":"2009-08-19T15:52:37Z","receivedAt":"2009-08-19T15:52:37Z","isPatch":true,"sender":{"key":"lznuaa@gmail.com","avatar":"https://avatars.githubusercontent.com/u/40642?v=4"},"body":"The Microsoft C runtime's vsnprintf function does not add NUL at\nthe end of the buffer.\n\nFurther, Microsoft deprecated vsnprintf in favor of _vsnprintf, so\nadd a #define to that end.\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\n---\n compat/snprintf.c |    7 ++++++-\n 1 files changed, 6 insertions(+), 1 deletions(-)\n\ndiff --git a/compat/snprintf.c b/compat/snprintf.c\nindex 6c0fb05..47b2b8a 100644\n--- a/compat/snprintf.c\n+++ b/compat/snprintf.c\n@@ -6,7 +6,7 @@\n  * number of characters to write without the trailing NUL.\n  */\n #ifndef SNPRINTF_SIZE_CORR\n-#if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ < 4\n+#if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ < 4 || defined(_MSC_VER)\n #define SNPRINTF_SIZE_CORR 1\n #else\n #define SNPRINTF_SIZE_CORR 0\n@@ -14,6 +14,11 @@\n #endif\n \n #undef vsnprintf\n+\n+#if defined(_MSC_VER)\n+#define vsnprintf _vsnprintf\n+#endif\n+\n int git_vsnprintf(char *str, size_t maxsize, const char *format, va_list ap)\n {\n \tchar *s;\n-- \n1.6.4.msysgit.0\n"},{"id":"121259","messageId":"1250697167-5536-3-git-send-email-lznuaa@gmail.com","threadId":"20664","inReplyTo":"1250697167-5536-2-git-send-email-lznuaa@gmail.com","subject":"[PATCH 03/12] Using macro WIN32 replace __MINGW32_ at Windows special handler The code which is conditional on MinGW32 is actually conditional on Windows. Use WIN32 macro will share both MINGW32 and MSVC environment.","fromName":"Frank Li","fromEmail":"lznuaa@gmail.com","sentAt":"2009-08-19T15:52:38Z","receivedAt":"2009-08-19T15:52:38Z","isPatch":true,"sender":{"key":"lznuaa@gmail.com","avatar":"https://avatars.githubusercontent.com/u/40642?v=4"},"body":"Signed-off-by: Frank Li <lznuaa@gmail.com>\n---\n help.c        |    2 +-\n pager.c       |    4 ++--\n run-command.c |    8 ++++----\n run-command.h |    2 +-\n setup.c       |    2 +-\n 5 files changed, 9 insertions(+), 9 deletions(-)\n\ndiff --git a/help.c b/help.c\nindex 399b0b4..9dae4e7 100644\n--- a/help.c\n+++ b/help.c\n@@ -126,7 +126,7 @@ static int is_executable(const char *name)\n \t    !S_ISREG(st.st_mode))\n \t\treturn 0;\n \n-#ifdef __MINGW32__\n+#ifdef WIN32\n {\t/* cannot trust the executable bit, peek into the file instead */\n \tchar buf[3] = { 0 };\n \tint n;\ndiff --git a/pager.c b/pager.c\nindex 4921843..37d1948 100644\n--- a/pager.c\n+++ b/pager.c\n@@ -9,7 +9,7 @@\n \n static int spawned_pager;\n \n-#ifndef __MINGW32__\n+#ifndef WIN32\n static void pager_preexec(void)\n {\n \t/*\n@@ -70,7 +70,7 @@ void setup_pager(void)\n \tpager_argv[2] = pager;\n \tpager_process.argv = pager_argv;\n \tpager_process.in = -1;\n-#ifndef __MINGW32__\n+#ifndef WIN32\n \tpager_process.preexec_cb = pager_preexec;\n #endif\n \tif (start_command(&pager_process))\ndiff --git a/run-command.c b/run-command.c\nindex d1df7ab..d0833f8 100644\n--- a/run-command.c\n+++ b/run-command.c\n@@ -67,7 +67,7 @@ int start_command(struct child_process *cmd)\n \n \ttrace_argv_printf(cmd->argv, \"trace: run_command:\");\n \n-#ifndef __MINGW32__\n+#ifndef WIN32\n \tfflush(NULL);\n \tcmd->pid = fork();\n \tif (!cmd->pid) {\n@@ -294,7 +294,7 @@ int run_command_v_opt_cd_env(const char **argv, int opt, const char *dir, const\n \treturn run_command(&cmd);\n }\n \n-#ifdef __MINGW32__\n+#ifdef WIN32\n static __stdcall unsigned run_thread(void *data)\n {\n \tstruct async *async = data;\n@@ -310,7 +310,7 @@ int start_async(struct async *async)\n \t\treturn error(\"cannot create pipe: %s\", strerror(errno));\n \tasync->out = pipe_out[0];\n \n-#ifndef __MINGW32__\n+#ifndef WIN32\n \t/* Flush stdio before fork() to avoid cloning buffers */\n \tfflush(NULL);\n \n@@ -339,7 +339,7 @@ int start_async(struct async *async)\n \n int finish_async(struct async *async)\n {\n-#ifndef __MINGW32__\n+#ifndef WIN32\n \tint ret = 0;\n \n \tif (wait_or_whine(async->pid))\ndiff --git a/run-command.h b/run-command.h\nindex e345502..09a4cb2 100644\n--- a/run-command.h\n+++ b/run-command.h\n@@ -79,7 +79,7 @@ struct async {\n \tint (*proc)(int fd, void *data);\n \tvoid *data;\n \tint out;\t/* caller reads from here and closes it */\n-#ifndef __MINGW32__\n+#ifndef WIN32\n \tpid_t pid;\n #else\n \tHANDLE tid;\ndiff --git a/setup.c b/setup.c\nindex e3781b6..029371e 100644\n--- a/setup.c\n+++ b/setup.c\n@@ -41,7 +41,7 @@ const char *prefix_path(const char *prefix, int len, const char *path)\n const char *prefix_filename(const char *pfx, int pfx_len, const char *arg)\n {\n \tstatic char path[PATH_MAX];\n-#ifndef __MINGW32__\n+#ifndef WIN32\n \tif (!pfx || !*pfx || is_absolute_path(arg))\n \t\treturn arg;\n \tmemcpy(path, pfx, pfx_len);\n-- \n1.6.4.msysgit.0\n"},{"id":"121261","messageId":"1250697167-5536-4-git-send-email-lznuaa@gmail.com","threadId":"20664","inReplyTo":"1250697167-5536-3-git-send-email-lznuaa@gmail.com","subject":"[PATCH 04/12] mingw.c: Use the O_BINARY flag to open files","fromName":"Frank Li","fromEmail":"lznuaa@gmail.com","sentAt":"2009-08-19T15:52:39Z","receivedAt":"2009-08-19T15:52:39Z","isPatch":true,"sender":{"key":"lznuaa@gmail.com","avatar":"https://avatars.githubusercontent.com/u/40642?v=4"},"body":"On Windows, non-text files must be opened using the O_BINARY flag.\nMinGW does this for us automatically, but Microsoft Visual C++\ndoes not.\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\n---\n compat/mingw.c |    4 ++--\n 1 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/compat/mingw.c b/compat/mingw.c\nindex 75c74b1..d5fa0ed 100644\n--- a/compat/mingw.c\n+++ b/compat/mingw.c\n@@ -132,7 +132,7 @@ int mingw_open (const char *filename, int oflags, ...)\n \tif (!strcmp(filename, \"/dev/null\"))\n \t\tfilename = \"nul\";\n \n-\tfd = open(filename, oflags, mode);\n+\tfd = open(filename, oflags | O_BINARY, mode);\n \n \tif (fd < 0 && (oflags & O_CREAT) && errno == EACCES) {\n \t\tDWORD attrs = GetFileAttributes(filename);\n@@ -278,7 +278,7 @@ int mkstemp(char *template)\n \tchar *filename = mktemp(template);\n \tif (filename == NULL)\n \t\treturn -1;\n-\treturn open(filename, O_RDWR | O_CREAT, 0600);\n+\treturn open(filename, O_RDWR | O_CREAT | O_BINARY, 0600);\n }\n \n int gettimeofday(struct timeval *tv, void *tz)\n-- \n1.6.4.msysgit.0\n"},{"id":"121260","messageId":"1250697167-5536-5-git-send-email-lznuaa@gmail.com","threadId":"20664","inReplyTo":"1250697167-5536-4-git-send-email-lznuaa@gmail.com","subject":"[PATCH 05/12] Place __stdcall between return value and function name","fromName":"Frank Li","fromEmail":"lznuaa@gmail.com","sentAt":"2009-08-19T15:52:40Z","receivedAt":"2009-08-19T15:52:40Z","isPatch":true,"sender":{"key":"lznuaa@gmail.com","avatar":"https://avatars.githubusercontent.com/u/40642?v=4"},"body":"MSVC require __stdcall is between return value and function name.\nALL Win32 API definition is as TYPE WINAPI function name\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\n---\n compat/mingw.c |    4 ++--\n run-command.c  |    2 +-\n 2 files changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/compat/mingw.c b/compat/mingw.c\nindex d5fa0ed..c938f0a 100644\n--- a/compat/mingw.c\n+++ b/compat/mingw.c\n@@ -1017,7 +1017,7 @@ static sig_handler_t timer_fn = SIG_DFL;\n  * length to call the signal handler.\n  */\n \n-static __stdcall unsigned ticktack(void *dummy)\n+static unsigned __stdcall ticktack(void *dummy)\n {\n \twhile (WaitForSingleObject(timer_event, timer_interval) == WAIT_TIMEOUT) {\n \t\tif (timer_fn == SIG_DFL)\n@@ -1146,7 +1146,7 @@ void mingw_open_html(const char *unixpath)\n \n int link(const char *oldpath, const char *newpath)\n {\n-\ttypedef BOOL WINAPI (*T)(const char*, const char*, LPSECURITY_ATTRIBUTES);\n+\ttypedef BOOL (WINAPI *T)(const char*, const char*, LPSECURITY_ATTRIBUTES);\n \tstatic T create_hard_link = NULL;\n \tif (!create_hard_link) {\n \t\tcreate_hard_link = (T) GetProcAddress(\ndiff --git a/run-command.c b/run-command.c\nindex d0833f8..62bea19 100644\n--- a/run-command.c\n+++ b/run-command.c\n@@ -295,7 +295,7 @@ int run_command_v_opt_cd_env(const char **argv, int opt, const char *dir, const\n }\n \n #ifdef WIN32\n-static __stdcall unsigned run_thread(void *data)\n+static unsigned __stdcall run_thread(void *data)\n {\n \tstruct async *async = data;\n \treturn async->proc(async->fd_for_proc, async->data);\n-- \n1.6.4.msysgit.0\n"},{"id":"121264","messageId":"1250697167-5536-6-git-send-email-lznuaa@gmail.com","threadId":"20664","inReplyTo":"1250697167-5536-5-git-send-email-lznuaa@gmail.com","subject":"[PATCH 06/12] Add _MSC_VER in porting head file git-compat-util.h","fromName":"Frank Li","fromEmail":"lznuaa@gmail.com","sentAt":"2009-08-19T15:52:41Z","receivedAt":"2009-08-19T15:52:41Z","isPatch":true,"sender":{"key":"lznuaa@gmail.com","avatar":"https://avatars.githubusercontent.com/u/40642?v=4"},"body":"Add Microsoft C++ compiler predefine _MSC_VER at\ngit-compat-util.h to include msvc.h at MSVC environment\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\n---\n git-compat-util.h |   12 +++++++++++-\n 1 files changed, 11 insertions(+), 1 deletions(-)\n\ndiff --git a/git-compat-util.h b/git-compat-util.h\nindex 9f941e4..cb89294 100644\n--- a/git-compat-util.h\n+++ b/git-compat-util.h\n@@ -77,8 +77,10 @@\n #include <string.h>\n #include <errno.h>\n #include <limits.h>\n+#ifndef _MSC_VER\n #include <sys/param.h>\n #include <sys/types.h>\n+#endif\n #include <dirent.h>\n #include <sys/time.h>\n #include <time.h>\n@@ -86,7 +88,12 @@\n #include <fnmatch.h>\n #include <assert.h>\n #include <regex.h>\n+\n+#ifndef _MSC_VER\n #include <utime.h>\n+#endif\n+\n+#ifndef _MSC_VER\n #ifndef __MINGW32__\n #include <sys/wait.h>\n #include <sys/poll.h>\n@@ -114,7 +121,10 @@\n #else \t/* __MINGW32__ */\n /* pull in Windows compatibility stuff */\n #include \"compat/mingw.h\"\n-#endif\t/* __MINGW32__ */\n+#endif  /* __MINGW32__ */\n+#else   /* _MSC_VER */\n+#include \"compat/msvc.h\"\n+#endif\t/* _MSC_VER */\n \n #ifndef NO_LIBGEN_H\n #include <libgen.h>\n-- \n1.6.4.msysgit.0\n"},{"id":"121262","messageId":"1250697167-5536-7-git-send-email-lznuaa@gmail.com","threadId":"20664","inReplyTo":"1250697167-5536-6-git-send-email-lznuaa@gmail.com","subject":"[PATCH 07/12] Add Unix header files to build git at MSVC.","fromName":"Frank Li","fromEmail":"lznuaa@gmail.com","sentAt":"2009-08-19T15:52:42Z","receivedAt":"2009-08-19T15:52:42Z","isPatch":true,"sender":{"key":"lznuaa@gmail.com","avatar":"https://avatars.githubusercontent.com/u/40642?v=4"},"body":"Add head files direct.h, unistd.h and time.h to build git\nUnder MSVC.\nThese file coming from mingw header file.\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\n---\n compat/vcbuild/include/dirent.h |  127 +++++++++++++++++++++++++++++++++++++++\n compat/vcbuild/include/unistd.h |   92 ++++++++++++++++++++++++++++\n compat/vcbuild/sys/time.h       |   21 +++++++\n 3 files changed, 240 insertions(+), 0 deletions(-)\n create mode 100644 compat/vcbuild/include/dirent.h\n create mode 100644 compat/vcbuild/include/unistd.h\n create mode 100644 compat/vcbuild/sys/time.h\n\ndiff --git a/compat/vcbuild/include/dirent.h b/compat/vcbuild/include/dirent.h\nnew file mode 100644\nindex 0000000..a6b6f4c\n--- /dev/null\n+++ b/compat/vcbuild/include/dirent.h\n@@ -0,0 +1,127 @@\n+/*\n+ * DIRENT.H (formerly DIRLIB.H)\n+ * This file has no copyright assigned and is placed in the Public Domain.\n+ * This file is a part of the mingw-runtime package.\n+ * No warranty is given; refer to the file DISCLAIMER within the package.\n+ *\n+ */\n+#ifndef _DIRENT_H_\n+#define _DIRENT_H_\n+\n+/* All the headers include this file. */\n+//#include <_mingw.h>\n+\n+#include <io.h>\n+\n+#define PATH_MAX 512\n+\n+#define __MINGW_NOTHROW\n+\n+#ifndef RC_INVOKED\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+struct dirent\n+{\n+\tlong\t\td_ino;\t\t/* Always zero. */\n+\tunsigned short\td_reclen;\t/* Always zero. */\n+\tunsigned short\td_namlen;\t/* Length of name in d_name. */\n+\tchar\t\td_name[FILENAME_MAX]; /* File name. */\n+};\n+\n+/*\n+ * This is an internal data structure. Good programmers will not use it\n+ * except as an argument to one of the functions below.\n+ * dd_stat field is now int (was short in older versions).\n+ */\n+typedef struct\n+{\n+\t/* disk transfer area for this dir */\n+\tstruct _finddata_t\tdd_dta;\n+\n+\t/* dirent struct to return from dir (NOTE: this makes this thread\n+\t * safe as long as only one thread uses a particular DIR struct at\n+\t * a time) */\n+\tstruct dirent\t\tdd_dir;\n+\n+\t/* _findnext handle */\n+\tlong\t\t\tdd_handle;\n+\n+\t/*\n+         * Status of search:\n+\t *   0 = not started yet (next entry to read is first entry)\n+\t *  -1 = off the end\n+\t *   positive = 0 based index of next entry\n+\t */\n+\tint\t\t\tdd_stat;\n+\n+\t/* given path for dir with search pattern (struct is extended) */\n+\tchar\t\t\tdd_name[PATH_MAX+3];\n+} DIR;\n+\n+DIR* __cdecl __MINGW_NOTHROW opendir (const char*);\n+struct dirent* __cdecl __MINGW_NOTHROW readdir (DIR*);\n+int __cdecl __MINGW_NOTHROW closedir (DIR*);\n+void __cdecl __MINGW_NOTHROW rewinddir (DIR*);\n+long __cdecl __MINGW_NOTHROW telldir (DIR*);\n+void __cdecl __MINGW_NOTHROW seekdir (DIR*, long);\n+\n+\n+/* wide char versions */\n+\n+struct _wdirent\n+{\n+\tlong\t\td_ino;\t\t/* Always zero. */\n+\tunsigned short\td_reclen;\t/* Always zero. */\n+\tunsigned short\td_namlen;\t/* Length of name in d_name. */\n+\twchar_t\t\td_name[FILENAME_MAX]; /* File name. */\n+};\n+\n+/*\n+ * This is an internal data structure. Good programmers will not use it\n+ * except as an argument to one of the functions below.\n+ */\n+typedef struct\n+{\n+\t/* disk transfer area for this dir */\n+\t//struct _wfinddata_t\tdd_dta;\n+\n+\t/* dirent struct to return from dir (NOTE: this makes this thread\n+\t * safe as long as only one thread uses a particular DIR struct at\n+\t * a time) */\n+\tstruct _wdirent\t\tdd_dir;\n+\n+\t/* _findnext handle */\n+\tlong\t\t\tdd_handle;\n+\n+\t/*\n+         * Status of search:\n+\t *   0 = not started yet (next entry to read is first entry)\n+\t *  -1 = off the end\n+\t *   positive = 0 based index of next entry\n+\t */\n+\tint\t\t\tdd_stat;\n+\n+\t/* given path for dir with search pattern (struct is extended) */\n+\twchar_t\t\t\tdd_name[1];\n+} _WDIR;\n+\n+\n+\n+_WDIR* __cdecl __MINGW_NOTHROW _wopendir (const wchar_t*);\n+struct _wdirent*  __cdecl __MINGW_NOTHROW _wreaddir (_WDIR*);\n+int __cdecl __MINGW_NOTHROW _wclosedir (_WDIR*);\n+void __cdecl __MINGW_NOTHROW _wrewinddir (_WDIR*);\n+long __cdecl __MINGW_NOTHROW _wtelldir (_WDIR*);\n+void __cdecl __MINGW_NOTHROW _wseekdir (_WDIR*, long);\n+\n+\n+#ifdef\t__cplusplus\n+}\n+#endif\n+\n+#endif\t/* Not RC_INVOKED */\n+\n+#endif\t/* Not _DIRENT_H_ */\ndiff --git a/compat/vcbuild/include/unistd.h b/compat/vcbuild/include/unistd.h\nnew file mode 100644\nindex 0000000..a0f59e6\n--- /dev/null\n+++ b/compat/vcbuild/include/unistd.h\n@@ -0,0 +1,92 @@\n+#ifndef _UNISTD_\n+#define _UNISTD_\n+\n+/* Win32 define for porting git*/\n+\n+#ifndef _MODE_T_\n+#define\t_MODE_T_\n+typedef unsigned short _mode_t;\n+\n+#ifndef\t_NO_OLDNAMES\n+typedef _mode_t\tmode_t;\n+#endif\n+#endif\t/* Not _MODE_T_ */\n+\n+#ifndef _SSIZE_T_\n+#define _SSIZE_T_\n+typedef long _ssize_t;\n+\n+#ifndef\t_OFF_T_\n+#define\t_OFF_T_\n+typedef long _off_t;\n+\n+#ifndef\t_NO_OLDNAMES\n+typedef _off_t\toff_t;\n+#endif\n+#endif\t/* Not _OFF_T_ */\n+\n+\n+#ifndef\t_NO_OLDNAMES\n+typedef _ssize_t ssize_t;\n+#endif\n+#endif /* Not _SSIZE_T_ */\n+\n+typedef signed char int8_t;\n+typedef unsigned char   uint8_t;\n+typedef short  int16_t;\n+typedef unsigned short  uint16_t;\n+typedef int  int32_t;\n+typedef unsigned   uint32_t;\n+typedef long long  int64_t;\n+typedef unsigned long long   uint64_t;\n+\n+typedef long long  intmax_t;\n+typedef unsigned long long uintmax_t;\n+\n+typedef int64_t off64_t;\n+\n+#define STDOUT_FILENO 1\n+#define STDERR_FILENO 2\n+\n+/* Some defines for _access nAccessMode (MS doesn't define them, but\n+ * it doesn't seem to hurt to add them). */\n+#define\tF_OK\t0\t/* Check for file existence */\n+/* Well maybe it does hurt.  On newer versions of MSVCRT, an access mode\n+   of 1 causes invalid parameter error. */ \n+#define\tX_OK\t0\t/* MS access() doesn't check for execute permission. */\n+#define\tW_OK\t2\t/* Check for write permission */\n+#define\tR_OK\t4\t/* Check for read permission */\n+\n+#define\t_S_IFIFO\t0x1000\t/* FIFO */\n+#define\t_S_IFCHR\t0x2000\t/* Character */\n+#define\t_S_IFBLK\t0x3000\t/* Block: Is this ever set under w32? */\n+#define\t_S_IFDIR\t0x4000\t/* Directory */\n+#define\t_S_IFREG\t0x8000\t/* Regular */\n+\n+#define\t_S_IFMT\t\t0xF000\t/* File type mask */\n+\n+#define\t_S_IXUSR\t_S_IEXEC\n+#define\t_S_IWUSR\t_S_IWRITE\n+#define\t_S_IRUSR\t_S_IREAD\n+#define\t_S_ISDIR(m)\t(((m) & _S_IFMT) == _S_IFDIR)\n+\n+#define\tS_IFIFO\t\t_S_IFIFO\n+#define\tS_IFCHR\t\t_S_IFCHR\n+#define\tS_IFBLK\t\t_S_IFBLK\n+#define\tS_IFDIR\t\t_S_IFDIR\n+#define\tS_IFREG\t\t_S_IFREG\n+#define\tS_IFMT\t\t_S_IFMT\n+#define\tS_IEXEC\t\t_S_IEXEC\n+#define\tS_IWRITE\t_S_IWRITE\n+#define\tS_IREAD\t\t_S_IREAD\n+#define\tS_IRWXU\t\t_S_IRWXU\n+#define\tS_IXUSR\t\t_S_IXUSR\n+#define\tS_IWUSR\t\t_S_IWUSR\n+#define\tS_IRUSR\t\t_S_IRUSR\n+\n+\n+#define\tS_ISDIR(m)\t(((m) & S_IFMT) == S_IFDIR)\n+#define\tS_ISREG(m)\t(((m) & S_IFMT) == S_IFREG)\n+#define\tS_ISFIFO(m)\t(((m) & S_IFMT) == S_IFIFO)\n+\n+#endif\n\\ No newline at end of file\ndiff --git a/compat/vcbuild/sys/time.h b/compat/vcbuild/sys/time.h\nnew file mode 100644\nindex 0000000..6ed82c0\n--- /dev/null\n+++ b/compat/vcbuild/sys/time.h\n@@ -0,0 +1,21 @@\n+#ifndef\t_UTIME_H_\n+#define\t_UTIME_H_\n+/*\n+ * Structure used by _utime function.\n+ */\n+struct _utimbuf\n+{\n+\ttime_t\tactime;\t\t/* Access time */\n+\ttime_t\tmodtime;\t/* Modification time */\n+};\n+\n+#ifndef\t_NO_OLDNAMES\n+/* NOTE: Must be the same as _utimbuf above. */\n+struct utimbuf\n+{\n+\ttime_t\tactime;\n+\ttime_t\tmodtime;\n+};\n+#endif\t/* Not _NO_OLDNAMES */\n+\n+#endif\n-- \n1.6.4.msysgit.0\n"},{"id":"121263","messageId":"1250697167-5536-8-git-send-email-lznuaa@gmail.com","threadId":"20664","inReplyTo":"1250697167-5536-7-git-send-email-lznuaa@gmail.com","subject":"[PATCH 08/12] Add MSVC porting files.","fromName":"Frank Li","fromEmail":"lznuaa@gmail.com","sentAt":"2009-08-19T15:52:43Z","receivedAt":"2009-08-19T15:52:43Z","isPatch":true,"sender":{"key":"lznuaa@gmail.com","avatar":"https://avatars.githubusercontent.com/u/40642?v=4"},"body":"Add msvc.c and msvc.h to build git under MSVC\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\n---\n compat/msvc.c |   33 ++++++++++++++++++++++\n compat/msvc.h |   86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 2 files changed, 119 insertions(+), 0 deletions(-)\n create mode 100644 compat/msvc.c\n create mode 100644 compat/msvc.h\n\ndiff --git a/compat/msvc.c b/compat/msvc.c\nnew file mode 100644\nindex 0000000..80afd4d\n--- /dev/null\n+++ b/compat/msvc.c\n@@ -0,0 +1,33 @@\n+#include \"../git-compat-util.h\"\n+#include \"win32.h\"\n+#include <conio.h>\n+#include \"../strbuf.h\"\n+\n+DIR *opendir(const char *name)\n+{\n+\tint len;\n+\tDIR *p;\n+\tp = (DIR*)malloc(sizeof(DIR));\n+\tmemset(p, 0, sizeof(DIR));\n+\tstrncpy(p->dd_name, name, PATH_MAX);\n+\tlen = strlen(p->dd_name);\n+\tp->dd_name[len] = '/';\n+\tp->dd_name[len+1] = '*';\n+\n+\tif (p == NULL)\n+\t\treturn NULL;\n+\n+\tp->dd_handle = _findfirst(p->dd_name, &p->dd_dta);\n+\n+\tif (p->dd_handle == -1) {\n+\t\tfree(p);\n+\t\treturn NULL;\n+\t}\n+\treturn p;\n+}\n+int closedir(DIR *dir)\n+{\n+\t_findclose(dir->dd_handle);\n+\tfree(dir);\n+\treturn 0;\n+}\ndiff --git a/compat/msvc.h b/compat/msvc.h\nnew file mode 100644\nindex 0000000..76cc6e5\n--- /dev/null\n+++ b/compat/msvc.h\n@@ -0,0 +1,86 @@\n+#ifndef __MSVC__HEAD\n+#define __MSVC__HEAD\n+\n+/*Define minimize windows version*/\n+#define WINVER 0x0500\n+#define _WIN32_WINNT 0x0500\n+#define _WIN32_WINDOWS 0x0410\n+#define _WIN32_IE 0x0700\n+#define NTDDI_VERSION NTDDI_WIN2KSP1\n+#include <winsock2.h>\n+\n+/*Configuration*/\n+#define NO_PREAD\n+#define NO_OPENSSL\n+#define NO_LIBGEN_H\n+#define NO_SYMLINK_HEAD\n+#define NO_IPV6\n+#define NO_SETENV\n+#define NO_UNSETENV\n+#define NO_STRCASESTR\n+#define NO_STRLCPY\n+#define NO_MEMMEM\n+#define NO_C99_FORMAT\n+#define NO_STRTOUMAX\n+#define NO_MKDTEMP\n+#define NO_MKSTEMPS\n+#define NO_ST_BLOCKS_IN_STRUCT_STAT\n+#define NO_NSEC\n+#define NO_REGEX\n+#define NO_SYS_SELECT_H\n+#define NO_PTHEADS\n+#define NO_ICONV\n+#define NO_PTHREADS\n+#define NO_CURL\n+#define NO_STRTOUMAX\n+#define NO_STRLCPY\n+#define NO_UNSETENV\n+#define NO_SETENV\n+\n+#define USE_WIN32_MMAP\n+#define USE_NED_ALLOCATOR\n+#define HAVE_STRING_H 1\n+#define STDC_HEADERS\n+#define SNPRINTF_RETURNS_BOGUS\n+#define RUNTIME_PREFIX\n+#define REGEX_MALLOC\n+\n+/*Git runtime infomation*/\n+#define ETC_GITCONFIG \"%HOME%\"\n+#define SHA1_HEADER \"mozilla-sha1\\\\sha1.h\"\n+#define GIT_EXEC_PATH \"bin\"\n+#define GIT_VERSION \"1.6\"\n+#define BINDIR \"bin\"\n+#define PREFIX \".\"\n+#define GIT_MAN_PATH \"man\"\n+#define GIT_INFO_PATH \"info\"\n+#define GIT_HTML_PATH \"html\"\n+#define DEFAULT_GIT_TEMPLATE_DIR \"templates\"\n+\n+/*porting function*/\n+#define strdup _strdup\n+#define read _read\n+#define close _close\n+#define dup _dup\n+#define dup2 _dup2\n+#define strncasecmp _strnicmp\n+#define strtoull _strtoui64\n+#define inline __inline\n+#define __inline__ __inline\n+#define __attribute__(x)\n+#define va_copy(dst, src)     ((dst) = (src))\n+\n+static __inline int strcasecmp (const char *s1, const char *s2)\n+{\n+\tint size1=strlen(s1);\n+\tint sisz2=strlen(s2);\n+\n+\treturn _strnicmp(s1,s2,sisz2>size1?sisz2:size1);\n+}\n+\n+#include \"compat/mingw.h\"\n+#undef ERROR\n+#undef stat\n+#define stat(x,y) mingw_lstat(x,y)\n+#define stat      _stat64\n+#endif\n\\ No newline at end of file\n-- \n1.6.4.msysgit.0\n"},{"id":"121265","messageId":"1250697167-5536-9-git-send-email-lznuaa@gmail.com","threadId":"20664","inReplyTo":"1250697167-5536-8-git-send-email-lznuaa@gmail.com","subject":"[PATCH 09/12] Don't include windows.h at winansi.c at MSVC build","fromName":"Frank Li","fromEmail":"lznuaa@gmail.com","sentAt":"2009-08-19T15:52:44Z","receivedAt":"2009-08-19T15:52:44Z","isPatch":true,"sender":{"key":"lznuaa@gmail.com","avatar":"https://avatars.githubusercontent.com/u/40642?v=4"},"body":"msvc.h include winsock2.h, which conflict windows.h.\nmsvc.h define minimized  required windows version\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\n---\n compat/winansi.c |    3 ++-\n 1 files changed, 2 insertions(+), 1 deletions(-)\n\ndiff --git a/compat/winansi.c b/compat/winansi.c\nindex 9217c24..15053d0 100644\n--- a/compat/winansi.c\n+++ b/compat/winansi.c\n@@ -1,8 +1,9 @@\n /*\n  * Copyright 2008 Peter Harris <git@peter.is-a-geek.org>\n  */\n-\n+#ifndef _MSC_VER\n #include <windows.h>\n+#endif\n #include \"../git-compat-util.h\"\n \n /*\n-- \n1.6.4.msysgit.0\n"},{"id":"121266","messageId":"1250697167-5536-10-git-send-email-lznuaa@gmail.com","threadId":"20664","inReplyTo":"1250697167-5536-9-git-send-email-lznuaa@gmail.com","subject":"[PATCH 10/12] Fix errcode have defined as int at MSVC","fromName":"Frank Li","fromEmail":"lznuaa@gmail.com","sentAt":"2009-08-19T15:52:45Z","receivedAt":"2009-08-19T15:52:45Z","isPatch":true,"sender":{"key":"lznuaa@gmail.com","avatar":"https://avatars.githubusercontent.com/u/40642?v=4"},"body":"MSVC type define errcode as int.\nregex.c use old style C function declare.\nChange it C99 style\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\n---\n compat/regex/regex.c |    7 ++-----\n 1 files changed, 2 insertions(+), 5 deletions(-)\n\ndiff --git a/compat/regex/regex.c b/compat/regex/regex.c\nindex 5ea0075..f94bed5 100644\n--- a/compat/regex/regex.c\n+++ b/compat/regex/regex.c\n@@ -4852,11 +4852,8 @@ regexec (preg, string, nmatch, pmatch, eflags)\n    from either regcomp or regexec.   We don't use PREG here.  */\n \n size_t\n-regerror (errcode, preg, errbuf, errbuf_size)\n-    int errcode;\n-    const regex_t *preg;\n-    char *errbuf;\n-    size_t errbuf_size;\n+regerror(int errcode, const regex_t *preg, \n+\t\t char *errbuf, size_t errbuf_size)\n {\n   const char *msg;\n   size_t msg_size;\n-- \n1.6.4.msysgit.0\n"},{"id":"121267","messageId":"1250697167-5536-11-git-send-email-lznuaa@gmail.com","threadId":"20664","inReplyTo":"1250697167-5536-10-git-send-email-lznuaa@gmail.com","subject":"[PATCH 11/12] Add MSVC Project file","fromName":"Frank Li","fromEmail":"lznuaa@gmail.com","sentAt":"2009-08-19T15:52:46Z","receivedAt":"2009-08-19T15:52:46Z","isPatch":true,"sender":{"key":"lznuaa@gmail.com","avatar":"https://avatars.githubusercontent.com/u/40642?v=4"},"body":"Add libgit.vcproj to build common library.\nAdd git.vcproj to build git program.\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\n---\n compat/vcbuild/git/git.vcproj       |  197 +++++\n compat/vcbuild/libgit/libgit.vcproj | 1363 +++++++++++++++++++++++++++++++++++\n 2 files changed, 1560 insertions(+), 0 deletions(-)\n create mode 100644 compat/vcbuild/git/git.vcproj\n create mode 100644 compat/vcbuild/libgit/libgit.vcproj\n\ndiff --git a/compat/vcbuild/git/git.vcproj b/compat/vcbuild/git/git.vcproj\nnew file mode 100644\nindex 0000000..6f85de3\n--- /dev/null\n+++ b/compat/vcbuild/git/git.vcproj\n@@ -0,0 +1,197 @@\n+<?xml version=\"1.0\" encoding=\"gb2312\"?>\n+<VisualStudioProject\n+\tProjectType=\"Visual C++\"\n+\tVersion=\"9.00\"\n+\tName=\"git\"\n+\tProjectGUID=\"{E3E30E51-C5AD-407B-AB43-985E4111474A}\"\n+\tRootNamespace=\"git\"\n+\tKeyword=\"Win32Proj\"\n+\tTargetFrameworkVersion=\"196613\"\n+\t>\n+\t<Platforms>\n+\t\t<Platform\n+\t\t\tName=\"Win32\"\n+\t\t/>\n+\t</Platforms>\n+\t<ToolFiles>\n+\t</ToolFiles>\n+\t<Configurations>\n+\t\t<Configuration\n+\t\t\tName=\"Debug|Win32\"\n+\t\t\tOutputDirectory=\"$(SolutionDir)$(ConfigurationName)\\bin\"\n+\t\t\tIntermediateDirectory=\"$(ConfigurationName)\"\n+\t\t\tConfigurationType=\"1\"\n+\t\t\tCharacterSet=\"0\"\n+\t\t\t>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPreBuildEventTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCCustomBuildTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCXMLDataGeneratorTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCWebServiceProxyGeneratorTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCMIDLTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCCLCompilerTool\"\n+\t\t\t\tOptimization=\"0\"\n+\t\t\t\tAdditionalIncludeDirectories=\"..\\..\\..;..\\..\\..\\..\\zlib;..\\..;..\\;..\\include;..\\..\\..\\compat;..\\..\\..\\compat\\fnmatch;..\\..\\..\\compat\\regex;.\\\"\n+\t\t\t\tPreprocessorDefinitions=\"WIN32;_DEBUG;_CONSOLE\"\n+\t\t\t\tMinimalRebuild=\"true\"\n+\t\t\t\tBasicRuntimeChecks=\"3\"\n+\t\t\t\tRuntimeLibrary=\"3\"\n+\t\t\t\tUsePrecompiledHeader=\"0\"\n+\t\t\t\tWarningLevel=\"3\"\n+\t\t\t\tDebugInformationFormat=\"4\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCManagedResourceCompilerTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCResourceCompilerTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPreLinkEventTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCLinkerTool\"\n+\t\t\t\tAdditionalDependencies=\"wininet.lib ws2_32.lib \"\n+\t\t\t\tLinkIncremental=\"2\"\n+\t\t\t\tGenerateDebugInformation=\"true\"\n+\t\t\t\tSubSystem=\"1\"\n+\t\t\t\tTargetMachine=\"1\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCALinkTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCManifestTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCXDCMakeTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCBscMakeTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCFxCopTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCAppVerifierTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPostBuildEventTool\"\n+\t\t\t/>\n+\t\t</Configuration>\n+\t\t<Configuration\n+\t\t\tName=\"Release|Win32\"\n+\t\t\tOutputDirectory=\"$(SolutionDir)$(ConfigurationName)\\bin\"\n+\t\t\tIntermediateDirectory=\"$(ConfigurationName)\"\n+\t\t\tConfigurationType=\"1\"\n+\t\t\tCharacterSet=\"0\"\n+\t\t\tWholeProgramOptimization=\"1\"\n+\t\t\t>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPreBuildEventTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCCustomBuildTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCXMLDataGeneratorTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCWebServiceProxyGeneratorTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCMIDLTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCCLCompilerTool\"\n+\t\t\t\tOptimization=\"2\"\n+\t\t\t\tEnableIntrinsicFunctions=\"true\"\n+\t\t\t\tAdditionalIncludeDirectories=\"..\\..\\..;..\\..\\..\\..\\zlib;..\\..;..\\;..\\include;..\\..\\..\\compat;..\\..\\..\\compat\\fnmatch;..\\..\\..\\compat\\regex;.\\\"\n+\t\t\t\tPreprocessorDefinitions=\"WIN32;NDEBUG;_CONSOLE\"\n+\t\t\t\tRuntimeLibrary=\"2\"\n+\t\t\t\tEnableFunctionLevelLinking=\"true\"\n+\t\t\t\tUsePrecompiledHeader=\"0\"\n+\t\t\t\tWarningLevel=\"3\"\n+\t\t\t\tDebugInformationFormat=\"3\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCManagedResourceCompilerTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCResourceCompilerTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPreLinkEventTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCLinkerTool\"\n+\t\t\t\tAdditionalDependencies=\"wininet.lib ws2_32.lib \"\n+\t\t\t\tLinkIncremental=\"1\"\n+\t\t\t\tGenerateDebugInformation=\"true\"\n+\t\t\t\tSubSystem=\"1\"\n+\t\t\t\tOptimizeReferences=\"2\"\n+\t\t\t\tEnableCOMDATFolding=\"2\"\n+\t\t\t\tTargetMachine=\"1\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCALinkTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCManifestTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCXDCMakeTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCBscMakeTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCFxCopTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCAppVerifierTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPostBuildEventTool\"\n+\t\t\t/>\n+\t\t</Configuration>\n+\t</Configurations>\n+\t<References>\n+\t</References>\n+\t<Files>\n+\t\t<Filter\n+\t\t\tName=\"Source Files\"\n+\t\t\tFilter=\"cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx\"\n+\t\t\tUniqueIdentifier=\"{4FC737F1-C7A5-4376-A066-2A32D752A2FF}\"\n+\t\t\t>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\git.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t</Filter>\n+\t\t<Filter\n+\t\t\tName=\"Header Files\"\n+\t\t\tFilter=\"h;hpp;hxx;hm;inl;inc;xsd\"\n+\t\t\tUniqueIdentifier=\"{93995380-89BD-4b04-88EB-625FBE52EBFB}\"\n+\t\t\t>\n+\t\t</Filter>\n+\t\t<Filter\n+\t\t\tName=\"Resource Files\"\n+\t\t\tFilter=\"rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav\"\n+\t\t\tUniqueIdentifier=\"{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}\"\n+\t\t\t>\n+\t\t</Filter>\n+\t</Files>\n+\t<Globals>\n+\t</Globals>\n+</VisualStudioProject>\ndiff --git a/compat/vcbuild/libgit/libgit.vcproj b/compat/vcbuild/libgit/libgit.vcproj\nnew file mode 100644\nindex 0000000..b399dad\n--- /dev/null\n+++ b/compat/vcbuild/libgit/libgit.vcproj\n@@ -0,0 +1,1363 @@\n+<?xml version=\"1.0\" encoding=\"gb2312\"?>\n+<VisualStudioProject\n+\tProjectType=\"Visual C++\"\n+\tVersion=\"9.00\"\n+\tName=\"libgit\"\n+\tProjectGUID=\"{F6DEC8C3-B803-4A86-8848-430F08B499E3}\"\n+\tRootNamespace=\"libgit\"\n+\tKeyword=\"Win32Proj\"\n+\tTargetFrameworkVersion=\"196613\"\n+\t>\n+\t<Platforms>\n+\t\t<Platform\n+\t\t\tName=\"Win32\"\n+\t\t/>\n+\t</Platforms>\n+\t<ToolFiles>\n+\t</ToolFiles>\n+\t<Configurations>\n+\t\t<Configuration\n+\t\t\tName=\"Debug|Win32\"\n+\t\t\tOutputDirectory=\"$(SolutionDir)$(ConfigurationName)\"\n+\t\t\tIntermediateDirectory=\"$(ConfigurationName)\"\n+\t\t\tConfigurationType=\"4\"\n+\t\t\tCharacterSet=\"0\"\n+\t\t\t>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPreBuildEventTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCCustomBuildTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCXMLDataGeneratorTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCWebServiceProxyGeneratorTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCMIDLTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCCLCompilerTool\"\n+\t\t\t\tOptimization=\"0\"\n+\t\t\t\tInlineFunctionExpansion=\"1\"\n+\t\t\t\tAdditionalIncludeDirectories=\"..\\..\\..;..\\..\\..\\..\\zlib;..\\..;..\\;..\\include;..\\..\\..\\compat;..\\..\\..\\compat\\fnmatch;..\\..\\..\\compat\\regex;.\\\"\n+\t\t\t\tPreprocessorDefinitions=\"WIN32;_DEBUG;_LIB;HAVE_STRING_H\"\n+\t\t\t\tMinimalRebuild=\"true\"\n+\t\t\t\tBasicRuntimeChecks=\"3\"\n+\t\t\t\tRuntimeLibrary=\"3\"\n+\t\t\t\tUsePrecompiledHeader=\"0\"\n+\t\t\t\tWarningLevel=\"3\"\n+\t\t\t\tDebugInformationFormat=\"3\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCManagedResourceCompilerTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCResourceCompilerTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPreLinkEventTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCLibrarianTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCALinkTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCXDCMakeTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCBscMakeTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCFxCopTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPostBuildEventTool\"\n+\t\t\t/>\n+\t\t</Configuration>\n+\t\t<Configuration\n+\t\t\tName=\"Release|Win32\"\n+\t\t\tOutputDirectory=\"$(SolutionDir)$(ConfigurationName)\"\n+\t\t\tIntermediateDirectory=\"$(ConfigurationName)\"\n+\t\t\tConfigurationType=\"4\"\n+\t\t\tCharacterSet=\"0\"\n+\t\t\tWholeProgramOptimization=\"1\"\n+\t\t\t>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPreBuildEventTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCCustomBuildTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCXMLDataGeneratorTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCWebServiceProxyGeneratorTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCMIDLTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCCLCompilerTool\"\n+\t\t\t\tOptimization=\"2\"\n+\t\t\t\tInlineFunctionExpansion=\"1\"\n+\t\t\t\tEnableIntrinsicFunctions=\"true\"\n+\t\t\t\tAdditionalIncludeDirectories=\"..\\..\\..;..\\..\\..\\..\\zlib;..\\..;..\\;..\\include;..\\..\\..\\compat;..\\..\\..\\compat\\fnmatch;..\\..\\..\\compat\\regex;.\\\"\n+\t\t\t\tPreprocessorDefinitions=\"WIN32;NDEBUG;_LIB;HAVE_STRING_H\"\n+\t\t\t\tRuntimeLibrary=\"2\"\n+\t\t\t\tEnableFunctionLevelLinking=\"true\"\n+\t\t\t\tUsePrecompiledHeader=\"0\"\n+\t\t\t\tWarningLevel=\"3\"\n+\t\t\t\tDebugInformationFormat=\"3\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCManagedResourceCompilerTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCResourceCompilerTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPreLinkEventTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCLibrarianTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCALinkTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCXDCMakeTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCBscMakeTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCFxCopTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPostBuildEventTool\"\n+\t\t\t/>\n+\t\t</Configuration>\n+\t</Configurations>\n+\t<References>\n+\t</References>\n+\t<Files>\n+\t\t<Filter\n+\t\t\tName=\"Source Files\"\n+\t\t\tFilter=\"cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx\"\n+\t\t\tUniqueIdentifier=\"{4FC737F1-C7A5-4376-A066-2A32D752A2FF}\"\n+\t\t\t>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\msvc.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\mozilla-sha1\\sha1.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t</Filter>\n+\t\t<Filter\n+\t\t\tName=\"Header Files\"\n+\t\t\tFilter=\"h;hpp;hxx;hm;inl;inc;xsd\"\n+\t\t\tUniqueIdentifier=\"{93995380-89BD-4b04-88EB-625FBE52EBFB}\"\n+\t\t\t>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\archive.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\attr.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\blob.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\branch.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\bundle.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\cache-tree.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\cache.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\color.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\commit.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\csum-file.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\decorate.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\delta.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diff.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diffcore.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\dir.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\exec_cmd.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\fetch-pack.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\fsck.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\git-compat-util.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\graph.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\grep.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\hash.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\help.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\http.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\levenshtein.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\list-objects.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\ll-merge.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\log-tree.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\mailmap.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\merge-recursive.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\notes.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\object.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pack-refs.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pack-revindex.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pack.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\parse-options.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\patch-ids.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pkt-line.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\progress.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\quote.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\reachable.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\reflog-walk.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\refs.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\remote.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\rerere.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\revision.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\run-command.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\send-pack.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\sha1-lookup.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\shortlog.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\sideband.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\sigchain.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\strbuf.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\string-list.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\tag.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\tar.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\thread-utils.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\transport.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\tree-walk.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\tree.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\unpack-trees.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\userdiff.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\utf8.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\walker.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\wt-status.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff-interface.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t</Filter>\n+\t\t<Filter\n+\t\t\tName=\"Resource Files\"\n+\t\t\tFilter=\"rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav\"\n+\t\t\tUniqueIdentifier=\"{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}\"\n+\t\t\t>\n+\t\t</Filter>\n+\t\t<Filter\n+\t\t\tName=\"compat\"\n+\t\t\t>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\basename.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\cygwin.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\fnmatch\\fnmatch.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\fnmatch\\fnmatch.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\fopen.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\memmem.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\mingw.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\mingw.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\mkdtemp.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\mkstemps.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\pread.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\qsort.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\regex\\regex.c\"\n+\t\t\t\t>\n+\t\t\t\t<FileConfiguration\n+\t\t\t\t\tName=\"Debug|Win32\"\n+\t\t\t\t\t>\n+\t\t\t\t\t<Tool\n+\t\t\t\t\t\tName=\"VCCLCompilerTool\"\n+\t\t\t\t\t\tPreprocessorDefinitions=\"REGEX_MALLOC\"\n+\t\t\t\t\t/>\n+\t\t\t\t</FileConfiguration>\n+\t\t\t\t<FileConfiguration\n+\t\t\t\t\tName=\"Release|Win32\"\n+\t\t\t\t\t>\n+\t\t\t\t\t<Tool\n+\t\t\t\t\t\tName=\"VCCLCompilerTool\"\n+\t\t\t\t\t\tPreprocessorDefinitions=\"REGEX_MALLOC\"\n+\t\t\t\t\t/>\n+\t\t\t\t</FileConfiguration>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\regex\\regex.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\setenv.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\snprintf.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\strcasestr.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\strlcpy.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\strtoumax.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\unsetenv.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\win32.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\win32mmap.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\winansi.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t</Filter>\n+\t\t<Filter\n+\t\t\tName=\"git\"\n+\t\t\t>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\abspath.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\alias.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\alloc.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\archive-tar.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\archive-zip.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\archive.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\attr.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\base85.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\bisect.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\blob.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\branch.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-add.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-annotate.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-apply.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-archive.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-bisect--helper.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-blame.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-branch.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-bundle.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-cat-file.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-check-attr.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-check-ref-format.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-checkout-index.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-checkout.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-clean.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-clone.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-commit-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-commit.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-config.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-count-objects.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-describe.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-diff-files.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-diff-index.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-diff-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-diff.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-fast-export.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-fetch--tool.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-fetch-pack.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-fetch.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-fmt-merge-msg.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-for-each-ref.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-fsck.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-gc.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-grep.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-help.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-init-db.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-log.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-ls-files.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-ls-remote.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-ls-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-mailinfo.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-mailsplit.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-merge-base.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-merge-file.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-merge-ours.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-merge-recursive.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-merge.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-mktree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-mv.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-name-rev.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-pack-objects.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-pack-refs.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-prune-packed.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-prune.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-push.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-read-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-receive-pack.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-reflog.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-remote.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-rerere.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-reset.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-rev-list.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-rev-parse.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-revert.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-rm.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-send-pack.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-shortlog.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-show-branch.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-show-ref.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-stripspace.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-symbolic-ref.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-tag.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-tar-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-unpack-objects.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-update-index.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-update-ref.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-upload-archive.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-verify-pack.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-verify-tag.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-write-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\bundle.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\cache-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\color.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\combine-diff.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\commit.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\config.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\connect.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\convert.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\copy.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\csum-file.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\ctype.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\date.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\decorate.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diff-delta.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diff-lib.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diff-no-index.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diff.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diffcore-break.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diffcore-delta.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diffcore-order.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diffcore-pickaxe.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diffcore-rename.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\dir.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\editor.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\entry.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\environment.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\exec_cmd.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\fsck.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\graph.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\grep.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\hash.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\help.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\ident.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\levenshtein.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\list-objects.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\ll-merge.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\lockfile.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\log-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\mailmap.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\match-trees.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\merge-file.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\merge-recursive.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\merge-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\name-hash.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\object.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pack-check.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pack-refs.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pack-revindex.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pack-write.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pager.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\parse-options.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\patch-delta.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\patch-ids.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\path.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pkt-line.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\preload-index.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pretty.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\progress.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\quote.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\reachable.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\read-cache.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\reflog-walk.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\refs.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\remote.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\rerere.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\revision.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\run-command.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\server-info.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\setup.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\sha1-lookup.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\sha1_file.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\sha1_name.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\shallow.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\sideband.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\sigchain.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\strbuf.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\string-list.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\symlinks.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\tag.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\thread-utils.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\trace.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\transport.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\tree-diff.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\tree-walk.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\unpack-trees.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\usage.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\userdiff.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\utf8.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\walker.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\wrapper.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\write_or_die.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\ws.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\wt-status.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff-interface.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t</Filter>\n+\t\t<Filter\n+\t\t\tName=\"xdiff\"\n+\t\t\t>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xdiff.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xdiffi.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xdiffi.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xemit.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xemit.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xinclude.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xmacros.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xmerge.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xpatience.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xprepare.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xprepare.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xtypes.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xutils.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xutils.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t</Filter>\n+\t</Files>\n+\t<Globals>\n+\t</Globals>\n+</VisualStudioProject>\n-- \n1.6.4.msysgit.0\n"},{"id":"121269","messageId":"40aa078e0908190859i266fa77dv3f0812c2ed60a42e@mail.gmail.com","threadId":"20664","inReplyTo":"1250697167-5536-8-git-send-email-lznuaa@gmail.com","subject":"Re: [PATCH 08/12] Add MSVC porting files.","fromName":"Erik Faye-Lund","fromEmail":"kusmabite@googlemail.com","sentAt":"2009-08-19T15:59:42Z","receivedAt":"2009-08-19T15:59:42Z","isPatch":true,"sender":{"key":"kusmabite@gmail.com","avatar":"https://avatars.githubusercontent.com/u/47073?v=4"},"body":"On Wed, Aug 19, 2009 at 5:52 PM, Frank Li<lznuaa@gmail.com> wrote:\n> +#endif\n> \\ No newline at end of file\n\nPlease add a newline after #endif.\n\n-- \nErik \"kusma\" Faye-Lund\nkusmabite@gmail.com\n(+47) 986 59 656\n"}]}