2012-09-17 9 views
11

Sto usando git da un'installazione Cygwin sul mio PC Windows. Sebbene cygwin supporti i bit di autorizzazione Unix su un file system NTFS, i programmi nativi di Windows come Eclipse non ne sono a conoscenza in modo che tutti i file creati dai programmi Windows abbiano il bit eseguibile impostato (755).Come impedire a git su Cygwin di impostare core.filemode = true

Solo raramente ho bisogno di controllare un file con il bit eseguibile impostato in un repository Git. Pertanto, mi piacerebbe avere core.filemode=false per impostazione predefinita. Ho impostato questo valore nella mia configurazione globale, ma sfortunatamente questo non ha alcun effetto: come documented, git clone sonda il file system per vedere se supporta le autorizzazioni e imposta core.filemode di conseguenza per repository, e quindi ho una configurazione core.filemode=true in ogni configurazione del repository, ignorando il mio predefinito desiderato.

C'è un modo per impedire a git clone di impostare automaticamente core.filemode?

+0

Nel caso in cui ciò è rilevante: sto usando git versione 1.7.9 – oberlies

risposta

0

Il modo normale sarebbe quello di inizializzare o clonare il repository utilizzando una directory modello git.

git clone --template=<template directory> 

In questa directory, è possibile specificare un file di configurazione, che sarà utilizzato come locale git repository di configurazione per il repo di recente init'd o clonato.

Il OP oberliesreports però che non funziona per core.filemode e core.ignorecase, per git config man page:

git-clone o git-init sarà sondare e impostare core.fileMode falso se del caso quando si crea il repository.

+0

Questo non funziona: sia 'clone' git e' git init' sovrascrivere il valore 'core.filemode' dal modello di configurazione. – oberlies

+0

@oberlies whoa, due mesi di laters;) Ok. Qual è la versione di git nel tuo Cygwin? Qualche possibilità di provarlo con un msysgit, al di fuori di Cygwin? Perché in base al documento o a http://monkeypatch.me/blog/mixing-professional-and-personal-git-configurations.html, 'config' non deve essere sovrascritto. – VonC

+0

È possibile impostare altre proprietà di configurazione tramite un file 'config' nel modello, ma git sovrascrive i valori' core.filemode' e 'core.ignorecase' dal modello. Sembra che [git stia solo cercando di essere troppo intelligente] (http://www.kernel.org/pub/software/scm/git/docs/git-config.html#_variables) ... – oberlies

1

È possibile impostare Bash in modo tale che ogni volta che si seleziona cd, tale directory sia un repository e lo configuri correttamente. Nel vostro ~/.bash_profile aggiungere

PROMPT_COMMAND=pc 
pc() { 
    [ -d .git -a ! -g .git/config ] || return 
    git config core.filemode 0 
    chmod +s .git/config 
} 
+0

È bello vedere che continui a migliorare la tua risposta. E anche se sembra che non ti piaccia più la domanda ... – oberlies

Problemi correlati