Discusión sobre el artículo "Cambiamos a MQL5 Algo Forge (Parte 2): Trabajando con varios repositorios" - página 2

 
Vladislav Boyko #:

Le sugiero que en el proceso de mejora para tratar de realizar un par de iteraciones de alguna estrategia de ramificación primitiva utilizando sólo MetaEditor y la interfaz web.

  1. Crear rama next, hacer un par de commits allí
  2. Verter next en main, borrar next
  3. Crear next de nuevo con un nuevo commit padre, hacer un par de commits
  4. ...

El punto 3 es actualmente imposible sin utilizar herramientas externas. Así que el hecho de que el punto 2 se pueda hacer a través del sitio no lo hace más fácil, porque es un callejón sin salida.


No he dicho nada nuevo en esta discusión - ya informé de todo esto hace un par de meses. Ahora hay un artículo que describe los puntos 1 y 2, pero da la casualidad de que el punto 3 no está en el artículo (aunque el punto 3 es una continuación lógica).

Falta el punto 3 porque prefiero el enfoque en el que las ramas de las diferentes características tienen nombres diferentes, no siempre el mismo (a continuación). Con tu enfoque, no me queda claro por qué debería eliminarse next. Parece similar en significado a la rama develop en el paquete main/develop, y se utiliza para trabajar en cada nueva característica cuando se añaden características secuencialmente.

 
Vladislav Boyko #:

Después de darle vueltas a la cabeza durante unos días, conseguí encontrar una manera de, al menos, rellenar la lista de archivos "rotos".

Sí, en un momento también probé un script para limpiar el repositorio común de todos los archivos compilados, que, como resultó, rápidamente resultó innecesario. Como no utilizaba la interfaz web para tratar las diferencias entre archivos, no me importaba que no mostraran el contenido allí. Así que averiguar la lista de archivos "rotos" es posible, pero ¿por qué? Si ya se sabe que son todos los archivos creados por ME (codificados en UTF-16 LE), esos son todos los archivos de mi repositorio excepto README.md, .gitignore y un par más.

 
Yuriy Bykov #:

Renat, ¿puedes decirme si tiene sentido convertir todas las fuentes a UTF-8 o ME seguirá orientado sólo en UTF-16 LE? Creo que en alguna parte de las ramas de nuevas construcciones o en algún otro lugar se mencionó acerca de la transición a UTF-8, pero tal vez parecía?

Oh, acabo de crear un nuevo archivo en ME (Nueva Clase), por lo que se creó inmediatamente en UTF-8.

 
Yuriy Bykov #:
Con tu enfoque, no me queda claro por qué eliminarías la siguiente rama.

Yo siempre borro una rama inmediatamente después de que se haya fusionado completamente con una rama de un nivel de estabilidad superior. Es un hábito y estoy seguro de que es un hábito muy útil.

A nivel puramente técnico, reconstruir una rama a menudo supone una diferencia bastante tangible en forma de commit padre (commit padre del siguiente commit). A veces esto no es crítico y sólo afecta a la usabilidad del gráfico de commits, y a veces no se puede prescindir de la recreación.

[editar]

En general, me parece extraño argumentar que es necesario poder eliminar ramas del repositorio local. Teniendo en cuenta que el modelo de ramas de Git es su característica estrella y que Git fomenta la creación, eliminación y fusión frecuente de ramas.

 
Yuriy Bykov #:
Como no utilizaba la interfaz web para tratar las diferencias de archivos, no me importaba que no mostraran el contenido allí.

Yo muy rara vez uso la interfaz web tampoco. Y no uso ningún botón Git en MetaEditor. Miro en Git Bash para Windows - directamente en el terminal - es suficiente y conveniente para mí.

Yuriy Bykov #:
Así que usted puede encontrar la lista de archivos "rotos", pero ¿por qué?

Para saber la lista de archivos rotos para poder arreglarlos. Para arreglarlos para poder mirar diff.

¿Para qué sirve diff? [se ha eliminado una frase sin importancia que estaba causando problemas al traductor automático].

 
Yuriy Bykov #:
Si ya se sabe que estos son todos los archivos creados por ME (en codificación UTF-16 LE)

He probado esto hace un par de meses. Asistente crea UTF-8 (normal, no archivos rotos). Incluso MT4 asistente crea archivos normales. Durante esas pruebas, ni una sola vez conseguí obtener un archivo "roto" del asistente.

A veces compruebo los archivos con ese script antes de enviarlos. Y, como resultó, no es por nada - hubo casos en que los archivos normales de repente cambió la codificación. Tal vez después de insertar algo desde el portapapeles, no lo sé con seguridad. Es poco probable que el cirílico estuviera allí - hace tiempo que dejé de usarlo incluso en los comentarios.

 
Vladislav Boyko #:
El alfabeto cirílico apenas existía - hace tiempo que dejé de utilizarlo incluso en los comentarios.

Al parecer, me equivoqué. Acabo de añadir esto al archivo .mq5 con codificación UTF-8:

// cirílico

y después de guardar la codificación del archivo cambió a "UTF-16 LE BOM".


Parece ser culpa de MetaEditor. He añadido caracteres cirílicos y guardado el archivo usando Notepad++ y la codificación sigue siendo UTF-8.

 
Vladislav Boyko #:

También me parece extraño argumentar la necesidad de poder eliminar ramas del repositorio local. Dado que el modelo de ramificación de Git es su característica asesina y Git fomenta la frecuente creación, eliminación y fusión de ramas.

Así que también estoy a favor de eliminar ramas después de que se fusionen con las ramas principales. Sólo que es la primera vez que oigo que tras el borrado se crea una rama para la nueva ficha con el mismo nombre, no una nueva.

¿Para qué sirve ver diff?

Sí, es algo muy necesario. Yo también lo uso activamente, pero sólo en VS Code. Y allí, extrañamente, no hay cuelgues, aunque miro archivos con "mala" codificación.

A veces compruebo los archivos conese script antes del commit. Y, como resultó, no es por nada - hubo casos en que los archivos normales de repente cambió la codificación. Tal vez después de insertar algo desde el portapapeles, no lo sé con certeza.

Nunca me había encontrado con algo así. También es bastante inesperado. ¿Quizás la rotura de los archivos normales se debió al uso simultáneo de diferentes builds de ME para trabajar con los mismos archivos? No sé...

He mirado en el historial de commits, que efectivamente los archivos añadidos hace dos meses ya tienen codificación UTF-8, y los archivos añadidos hace tres meses siguen siendo UTF-16 LE. Aparentemente hubo un cambio a la codificación UTF-8 en algún momento de ese tiempo.

 
Vladislav Boyko #:

Supongo que estaba equivocado. Acabo de añadir esto al archivo .mq5 con codificación UTF-8:

y después de guardar la codificación del archivo cambió a "UTF-16 LE BOM".


Parece ser culpa de MetaEditor. He añadido caracteres cirílicos y guardado el archivo usando Notepad++ y la codificación se mantuvo UTF-8.

Confirmo, después de añadir letras rusas y guardar el archivo la codificación cambia de UTF-8 a UTF-16 LE. Si se eliminan todas las letras rusas y se guarda, sigue siendo UTF-16 LE.

 
Vladislav Boyko #:
Parece ser culpa de MetaEditor.

Aquí hay una prueba de que se puede hacer compatible UTF-8, cirílico y Git:

https://forge.mql5.io/junk/utf8-cyrillic-test/commit/e87d37b02e88d44305dea0f7f6630c6173471aea

Todo lo que necesitas hacer es pedir a MetaEditor que no cambie la codificación del archivo.