Almacenamiento basado en archivos
En CODESYS 3 Un proyecto se almacena en un único archivo binario. El contenido de este archivo no se puede leer ni modificar fuera del entorno de desarrollo. Al comparar dos versiones del proyecto, no se aprecian diferencias significativas, y dos editores entran en conflicto al modificar objetos distintos.
Después de instalar el CODESYS File-Based Storage complemento en CODESYS 3, se proporciona un formato de almacenamiento basado en archivos que es compatible con el formato de almacenamiento en CODESYS 4. Permite la conversión del formato basado en archivos en CODESYS 4 en formato binario en CODESYS 3 y de vuelta.
En CODESYS 4 Un proyecto se gestiona mediante un formato abierto basado en archivos. Cada objeto se almacena en su propio archivo de texto, y la estructura del proyecto es la estructura de carpetas del sistema de archivos. No existe un gestor de objetos.
De esto se derivan las siguientes ventajas.
Un objeto puede leerse con cualquier editor de texto y editarse si es necesario.
La comparación de dos estados del proyecto muestra los cambios de contenido en texto plano.
Los cambios realizados en diferentes objetos no entran en conflicto entre sí.
Un proyecto se gestiona en un sistema de control de versiones como Git, SVN o Mercurial. El archivo del proyecto desde CODESYS 3 es innecesario por este motivo.
Se pueden utilizar los procesos habituales de un sistema de control de versiones, como las solicitudes de fusión, las solicitudes de extracción y la revisión de código, ya que los cambios también se pueden visualizar en el portal web del sistema de control de versiones.
Para obtener más información, consulte lo siguiente: Espacios de trabajo y tipos de archivo
Código fuente y archivos generados
No todo lo que hay en la carpeta del proyecto pertenece al texto fuente. Además de los archivos objeto, CODESYS 4 También almacena resultados temporales, bibliotecas resueltas y configuraciones específicas del usuario. Estos archivos se regeneran según sea necesario.
Carpeta | Ubicación | Contenido |
|---|---|---|
| En el | Compilar y referenciar contextos |
| En el | Archivos temporales creados con fines de diagnóstico. |
| En el | Se genera una aplicación de arranque sin conexión si no se especifica ninguna ruta. |
| Nivel superior en | Bibliotecas compiladas resueltas |
| Nivel superior en el proyecto | Configuración del proyecto y preferencias del usuario El directorio se crea únicamente cuando se guarda por primera vez una configuración de proyecto personalizada. |
| Paralelo al archivo del espacio de trabajo | Configuración del espacio de trabajo y preferencias del usuario |
Por otro lado, la caché de descripciones de dispositivos pertenece al proyecto. Las descripciones de dispositivos están disponibles como archivos de texto y también están controladas por versiones.
Conjunto de caracteres, saltos de línea y sangría
Para asegurarnos de que una comparación entre dos versiones del proyecto muestre cambios de contenido y no cambios de formato, todos los archivos se escriben de acuerdo con reglas fijas en CODESYS 4.
Propiedad | Regla |
|---|---|
Conjunto de caracteres para el código fuente IEC y archivos JSON. | UTF-8 sin BOM (Marca de orden de bytes ) Los archivos inicialmente omiten cualquier información sobre la codificación de caracteres utilizada. |
Conjunto de caracteres para archivos XML | Se prefiere UTF-8 Los archivos de inventario, como las descripciones de los dispositivos, se leen según su declaración meta. |
Salto de línea al escribir | LF (Alimentación de línea ) |
Salto de línea al leer | LF y CRLF (Retorno de carro Alimentación de línea ) |
Sangría en archivos JSON y XML | 1 pestaña por nivel |
Orden de las entradas en los objetos JSON | Determinista |
Los archivos siempre se guardan con el formato de final de línea LF (0x0A). Tanto LF como CRLF (0x0D, 0x0A ) son compatibles durante la importación. Esto garantiza que los archivos permanezcan legibles incluso cuando se hayan modificado fuera de CODESYS 4 con un editor que utiliza el formato de fin de línea CRLF.
Proyectos en sistemas de control de versiones
El orden determinista en los objetos JSON y la indentación con tabulaciones tienen el mismo propósito: un objeto modificado solo crea una diferencia donde el contenido ha cambiado.
Archivos de objeto
Archivos de configuración del proyecto, como
Libraries.jsonyProjectInfo.jsonLibraries.lock.jsonarchivo de bloqueoArchivo de espacio de trabajo
Las carpetas y archivos generados a partir del código fuente no forman parte del control de versiones. Contienen datos temporales, archivos binarios o configuraciones específicas del usuario. Otros entornos de desarrollo manejan esto de la misma manera; por ejemplo, un proyecto de C# tiene la bin y obj carpetas.
Para las siguientes carpetas, la exclusión es una configuración predeterminada, no un requisito. Si los archivos binarios no representan un problema en su sistema de control de versiones, puede incluir las carpetas en dicho sistema.
Archivos excluidos del control de versiones:
.library-cache.user<workspace name>.fbsws.user
Configure el sistema de control de versiones para que los archivos se conviertan al formato LF (Alimentación de línea ) cuando se registra y se obtiene sin cambios cuando se extrae. En Git, puede configurar esto con las siguientes configuraciones.
core.eol = lf core.autocrlf = false
Guarde las exclusiones para cada carpeta de proyecto en un archivo separado con el .gitignore extensión y la configuración de los saltos de línea en un archivo separado con el .gitattributes extensión. Ambos archivos deben estar bajo control de versiones; de lo contrario, las reglas no funcionarán.
Editar archivos fuera de CODESYS 4
Los archivos objeto de un proyecto están en texto plano. Si es necesario, puede editar los archivos fuera de CODESYS 4, por ejemplo, al resolver un conflicto de fusión o al realizar un cambio que afecta a muchos objetos de la misma manera.
Aquí debes cumplir con las siguientes condiciones:
La declaración sigue siendo sintácticamente válida. La declaración se utiliza para separarla de la implementación.
El conjunto de caracteres sigue siendo UTF-8 sin BOM.
La estructura de carpetas permanece sin cambios porque es la estructura del proyecto.
Siempre que resuelva un conflicto de fusión fuera de CODESYS 4, deberías comprobar el resultado después en el CODESYS 4 IDE. Una fusión puede crear relaciones entre objetos que no están permitidas en un proyecto. Un ejemplo de esto es una POU que está subordinada a otra POU.
Archivos del sistema de control de versiones como .gitignore se encuentran en la carpeta del proyecto y, por lo tanto, también aparecen en el navegador del espacio de trabajo.