From: Steffen Prohaska Date: Thu, 26 Jul 2007 06:25:51 GMT Subject: Re: Windows support Message-ID: <08588116-8E66-4F40-BC77-E0B272BE7776@zib.de> In-Reply-To: <20070726031546.GN32566@spearce.org> On Jul 26, 2007, at 5:15 AM, Shawn O. Pearce wrote: > Why Cygwin? Because I have to use Windows, but I'd rather use Linux. > No, Linux isn't permitted. And Solaris/x86 is only allowed on > "servers". I have yet to find a way to classify my desktop as > a server. :-| > > git-gui is fairly well supported under Cygwin, as I use it a lot > in my day-job. As do a lot of my coworkers. Which actually gives > me a pretty good testing ground; ~20 people all beating on git-gui > all day long is a pretty sizable testing group. I actually wonder > some days if git-gui is better tested on Cygwin than it is on Linux. > > But as has been stated on this thread, Cygwin isn't native Windows. So apparently you're working in a reasonably sized group of people all testing git on cygwin. I'd be completely satisfied if git ran rock solid on cygwin. I found the following list of warnings about cygwin in the wiki entry WindowsInstall [1]. Some points look quite scary to me. What is your real-world experience? Are the warning still valid? Must I really fear to break cygwin if I press Ctrl-C? Do I really need to reboot regularly? I don't think this is an option. Nowadays our Windows boxes run for months, too. I can't seriously tell people that they need to regularly reboot if they want to use git. Here's the list, copied from http://git.or.cz/gitwiki/WindowsInstall * Use git on local NTFS disks -- Network drives disks don't support the filesystem semantics GIT needs; for interoperability purposes you can store bare repositories on FAT32 disks. * Be careful with the case in filenames. Similarly, avoid special chars in filenames. * Run git gc early and often. There are slowdowns with many unpacked objects. Be careful to not create very big packfiles (bigger than 2 Gb). * Avoid using ActiveState Perl if possible. Ask in the MailingLists if you must. * Try to avoid interrupting (Ctrl-C) processes - it breaks cygwin. * Consider setting core.fileMode to false (git repo-config core.fileMode false) if file modes are frequently the only differences detected by Git. Many Windows applications make the execute bit be set in Cygwin when they save a file. Besides Cygwin detects file mode by stupid combination of content analysis, file name extension and moon phase. * Insert "set CYGWIN=tty binmode" after the first line of C: \cygwin\cygwin.bat, so you can use Ctrl-z in cygwin's bash to suspend a program. * Windows usually writes end-of-line as CRLF, while Unix/POSIX writes LF. This can cause a variety of problems. There are current efforts to address this. * Setup binary mode for cygwin (there is an option in cygwin's setup program), otherwise Cygwin mangles everything read and written (Git repos have binary files in control structures). * Avoid big repos. * Avoid big blobs (very big files. Basically anything larger than 10Mb is too big). * Avoid big trees (directories with many files in them). * Avoid deep hierarchies. * Reboot regularly (memory fragmentation) * Defragment often (filesystems fragmentation) Steffen