threads / discuss / 239

(nearly trivial) patch to compile git on cygwin

Subject: (nearly trivial) patch to compile git on cygwin

## tl;dr

2 messages between Apr 22, 2005 and Apr 22, 2005.

replies: 1people: 2as markdown or json

lode leroy· Apr 22, 2005, 08:09 UTC · lore

I wonder if anyone is interested in using git on windows / cygwin. It almost compiles out of the box... just this one little thinggy that's glibc-specific (struct dirent . d_type)

~/pkg $ diff -bruw git-0.6 git-0.6-cyg | grep -v ^Only diff -bruw git-0.6/Makefile git-0.6-cyg/Makefile --- git-0.6/Makefile 2005-04-21 19:58:47.000000000 +0200 +++ git-0.6-cyg/Makefile 2005-04-22 09:28:54.259531200 +0200

@@ -30,7 +30,7 @@
$(LIB_FILE): $(LIB_OBJS)
        $(AR) rcs $@ $(LIB_OBJS)

-LIBS= $(LIB_FILE) -lssl -lz
+LIBS= $(LIB_FILE) -lssl -lz -lcrypto

init-db: init-db.o

diff -bruw git-0.6/show-files.c git-0.6-cyg/show-files.c
--- git-0.6/show-files.c        2005-04-21 19:58:47.000000000 +0200
+++ git-0.6-cyg/show-files.c    2005-04-22 10:03:04.227240000 +0200
@@ -61,26 +61,33 @@
                                continue;
                        len = strlen(de->d_name);
                        memcpy(fullname + baselen, de->d_name, len+1);

+#ifdef DT_DIR
                        switch (de->d_type) {
+#endif
                        struct stat st;
+#ifdef DT_DIR
                        default:
                                continue;
                        case DT_UNKNOWN:
+#endif
                                if (lstat(fullname, &st))
                                        continue;
                                if (S_ISREG(st.st_mode))
                                        break;
                                if (!S_ISDIR(st.st_mode))
                                        continue;
+#ifdef DT_DIR
                                /* fallthrough */
                        case DT_DIR:
+#endif
                                memcpy(fullname + baselen + len, "/", 2);
                                read_directory(fullname, fullname, baselen + 
len + 1);
                                continue;
+#ifdef DT_DIR
                        case DT_REG:
                                break;
                        }
+#endif
                        add_name(fullname, baselen + len);
                }
                closedir(dir);
~/pkg $

_________________________________________________________________
Jon Seymour· Apr 22, 2005, 08:53 UTC · re: lode leroy · lore

[RFC] Is there a need for binary bit in cache/tree entries to properly support Cygwin builds of GIT?

On 4/22/05, lode leroy <lode_leroy@hotmail.com> wrote:
> I wonder if anyone is interested in using git on windows / cygwin.
> It almost compiles out of the box... just this one little thinggy
> that's glibc-specific (struct dirent . d_type)
> 
 
I wonder if a cygwin compile of GIT should be forced to strip CR's
from text files prior to checksum calculations and blob storage.
Otherwise, spurious differences may be introduced into text files that
are somehow munged while checked out in a Windows environment.

There is an argument that this should be done external to the GIT core, but then every external non-unix tool that interacts with GIT has to have heuristics to distinguish text from binary and they all have to have the same heuristics.

So, perhaps there is an argument for using one of the unused "mode" bits to encode a binary flag and add an option to update-cache that allows the bit to be flipped if a blob is known to be binary. A cygwin GIT binary could then be forced to strip CR's from blobs marked as text, but a unix binary need not change its behaviour.

Regards,
jon.

← back to recent threads