He configurado Composer para download HTMLPurifier localmente, pero Git no va a enviar todos los files a mi repository maestro de OpenShift. Por qué no?

Tengo Composer instalado y lo he usado para download HTMLPurifier localmente. Ahora me gustaría llevar esa descarga a mi repository de OpenShift Git. Entonces, en una window de Git Bash, ejecuto lo siguiente …

git add -A :/

git commit -a -m "Uploading HTML Purifier"

git push origin master

En este punto, Git informa que el push fue exitoso, pero cuando busco el directory a través de SSH, muestra que el directory HTMLPurifier está vacío. ¿Porqué es eso? ¿Cómo hago para que Git empuje esos files?

Información adicional: noté que el directory HTMLPurifier es de hecho un repository Git y contiene un file .gitignore en su directory raíz. Traté de eliminarlo y volver a ejecutar los commands anteriores, pero fue en vano …

Debería intentar evitar empujar las dependencies descargadas a un repository. Se recomienda agregar el directory del vendor en el file .gitignore en el nivel superior. Pero lo que debe hacer en su lugar es comprometer y presionar tanto composer.json como composer.lock .

Este es el motivo: el directory de proveedores es administrado por Composer. Ejecutar Compositor probablemente hará cosas menores durante una actualización, pero también puede estar haciendo cosas pesadas si el equipo de Composer decide optimizar las cosas.

Además, si necesita una twig de un package, y Composer conoce el repository de ese package, se clonará un repository de Git o realizará un checkout de SVN en lugar de tratar de tomar un package ZIP de esa twig (a menudo no hay forma de hacerlo). para get un package así para las sucursales, e incluso las versiones labeldas en un repository simple de Git no tienen esa capacidad de descarga. Composer sabe que Github ofrece tales descargas y detecta Github mirando la URL del repository).

Entonces puede suponer que Composer colocará una gran cantidad de metadatos de repository en el file del proveedor, y si los compromete ciegamente, las cosas se pondrán feas. En primer lugar, está comprometiendo demasiados files, aumentando el repository en una cantidad innecesaria, lo que ralentizará las cosas. Entonces, si cloné repositorys Git, estos serán tratados como submodules, y eso tiene otro montón de maldad, según me han dicho. Si solo estás aprendiendo Git, probablemente no sea una buena idea comenzar con esto. Y si las herramientas te conocen lo suficiente (Git y Composer), probablemente tampoco las necesites.

Solo hay una razón por la que intentas enviar una versión modificada del directory del proveedor: si el process de lanzamiento depende completamente de que todos los files estén presentes en tu repository, sin ninguna forma de ejecutar una composer install durante el lanzamiento a hacer que estos files aparezcan en el server de destino.

En tales casos, debe instalar o actualizar los packages con Composer, y luego revisar todos los directorys creados y eliminar las .svn .git y .svn (y probablemente también .hg para Mercurial) que encuentre. Solo entonces podrás enviar los files a tu propio repository.

Pero tenga en count que este paso puede ser tedioso para hacerlo manualmente; es probable que desee crear un script de actualización que haga todo lo que le dé resultado. También puede tener problemas al actualizar dependencies porque Composer espera que los files simplemente se eliminen cuando se eliminen, y que no se interpongan cuando se escriben. No puedo decirte exactamente lo que estarías experimentando porque depende de cómo harías las cosas, pero espero que tropieces con problemas aleatorios.

En pocas palabras: evite comprometer las dependencies en su propio repository si es posible.

Intenta usar la opción -force, también necesitarás eliminar el directory .git dentro del directory HTMLPurifier también.