2010-09-30 18 views
14

Cuando estoy usando git sobre samba share en windows me sale un error cuando quiero enviar un archivo a través de git_extentions o tortoiseGIT. El error es: error: no se puede escribir el nombre de archivo sha1 .git/objects/b4/e819f886bf31b67c42249a0eff8e8b16cf7622: Permiso denegado Cuando agrego el archivo a través del servidor ubuntu y confirmo el archivo funciona bien. También estoy trabajando en una banrch.Git over samba - no se puede escribir el nombre de archivo sha1 | Permiso denegado

Ya intenté chmod 777 toda la carpeta .git.

+0

¿Qué hace el archivo de configuración de samba aspecto similar, y es el usuario el mismo que lo está esperando git? – dkinzer

+0

¡Este problema acaba de comenzar a ocurrir para mí! Actualicé msysGit a v1.7.6.msysgit.0, pero el servidor al que me conecto en el compartimiento samba tiene v1.7.2.1 activado. 1. No sé qué msysGit tuve antes para volver a probar. 2. Por lo tanto, actualizará la versión de los servidores para ver si eso ayuda. –

+0

Ok, eso no ayudó. v1.7.2.1 ejecutándose en mi servidor. Todo comenzó cuando comencé a usar PortableGit para otra cosa, ¡y también sucede con eso! –

Respuesta

0

Probablemente samba blocks dotfiles? ¿Por qué no usar ssh en lugar de samba para empujar?

+0

Los archivos de puntos no están bloqueados y se ven como archivos ocultos en Windows. ¿Cómo se puede presionar por ssh? Para comprometer los archivos a través de línea de comandos está funcionando bien. – InfoTracer

+0

Uso git sobre samba porque desarrollo en Windows, pero mi servidor de prueba es ubuntu. Significa que no tengo que implementar cada vez que quiero probar un cambio. – Nathan

5

He visto esto también. Es un defecto de Git, probablemente relacionado con la forma en que crea y modifica los archivos. Para aclarar el problema:

# mount a samba share locally. 
$ mount -t cifs options //share/project /mnt/project 

# The share contains a git checkout. 
# Do some typical development. 
$ cd /mnt/project 
$ vi file ## ok 
$ git pull ## ok 
$ git status ## ok 
$ git add file ## error! 
    error: unable to create temporary sha1 filename 
    .git/objects/8b/tmp_obj_mYE1Xi: Permission denied 


## But everything from the shell seems to work. 
$ ls -latr .git/objects/8b/ ## ok. empty dir. 
$ touch .git/objects/8b/tmp_obj_mYE1Xi ## ok. 
$ echo test123> .git/objects/8b/tmp_obj_mYE1Xi ## ok. 
$ cat .git/objects/8b/tmp_obj_mYE1Xi ## ok. 
test123 
$ rm .git/objects/8b/tmp_obj_mYE1Xi ## ok. 

En la versión 1.5.6.5 Git (último paquete de Debian), se obtiene el error cuando intenta git-add. Si instala git 1.7.3.2 (última versión), puede agregar el archivo, pero recibirá el error cuando intente realizar la confirmación.

+0

¡Ahh, esto es realmente molesto! ¡Solo comencé a tener este problema después de usar PortableGit y/o actualizar mSysgit! –

4

Este problema se ha visto anteriormente de alguna forma u otra para las instalaciones de Git/Samba. No está seguro de si el origen del problema ha sido aún pin señaló:

http://code.google.com/p/msysgit/issues/detail?id=130#makechanges

Actualización:.

parece Git v 1.7.3.3 ha resuelto este problema.

+0

De hecho, actualicé samba como se menciona en la página vinculada, y funcionó para mí. http://code.google.com/p/msysgit/issues/detail?id=130#c21 – Broote

+2

Estoy usando v1.7.6.msysgit.0 y v1.7.2.1 en mi servidor, pero todavía veo esto ! –

+0

Obteniendo el problema en Git-1.9.5-preview20141217 –

3

Ok, he encontrado una solución que funcionó para mí.

He estado usando git sobre samba (samba-common-3.0.33-3.7.el5) para las edades sin problemas.

Actualicé git a Git-1.7.6-preview20110708, ¡y todo se fue a la olla!

Como soy un desarrollador tan metódico, ¡no escribí lo que actualicé!

Así que revisé la lista de versiones anteriores y vi una estrella al lado de Git-1.7.0.2-preview20100309, por lo que era un poco vieja, pero póngala ... y ¡bang ... funciona!

+0

Ambos enlaces ahora están rotos. Y 'apt-get install git = 1.7.0.2' produce' Versión '1.7.0.2' para 'git' no se encontró'. ¿Ahora que? – poshest

1

comenzamos a usar git hoy. la versión 1.7.10 estaba bien para máquinas win7. en WinXP ocurrimos el error dado. para esas máquinas degradamos a 1.7.0.2 como Ian declaró en su publicación y funciona ahora.

0

En mi caso, fue el software antivirus en Windows que bloqueó el archivo (s). Deshabilitar temporalmente el antivirus solucionó el problema.

0

que respondieron a esta pregunta sobre here así

En mi caso, parece que Git (v 2.6.3) trató de crear sus propios permisos de lectura/escritura en la unidad de Samba. Esto evitaría que los archivos y/o objetos del módulo de conseguir escrita (error de desempaquetado)

remote: error: unable to write sha1 filename ./objects/pack/pack-<some_hex_string>.pack: Permission denied 
remote: fatal: cannot store pack file 
error: unpack failed: index-pack abnormal exit 
To z:\git\<repo name> 
! [remote rejected] master -> master (unpacker error) 
error: failed to push some refs 

fui hacia atrás y adelante en tratar de solucionar.Finalmente, como tenía el control de la máquina Samba, agregué una línea a la configuración de la unidad samba, que dice "heredar permisos = sí". Reinicié Samba e intenté empujar. ¡Funcionó!

Esto funcionó para mí ya que soy la única persona que usa el servidor Samba. Para otros, puede jugar con "modo de directorio de fuerza" o "modo de crear fuerza". Puede encontrar las páginas de manual para los mayores de aquí:

https://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/AccessControls.html

Cuestiones relacionadas