Control de versión

Los repositorios administrados de documentos son importantes en el trabajo en equipo cuando varios miembros deben trabajar de manera simultánea o coordinada sobre los mismos documentos, pero también es útil en el caso de lobos solitarios. Control de versión es el arte de administrar cambios. Es una herramienta crítica en el desarrollo de software.

Algunos sistemas de control de versión son administradores de software (Software Configuration Management). Estos sistemas están especí­ficamente diseñados para administrar árboles de código fuente y soportan el ciclo de vida de aplicaciones. Otros sistemas son repositorios generales de documentos.

Un repositorio de información para control de versión guarda un registro de los cambios hechos tanto a los datos como a la estructura misma de archivos. Un cliente puede no solo ver la última versión de los documentos guardados, sino también estados previos del sistema de archivos. Por ejemplo un cliente puede hacer consultas del tipo ¿Qué cambios se hicieron en un documento en la última semana?

El problema fundamental es por un lado ¿Cómo compartir información y coordinar modificaciones concurrentes a un grupo de documentos? Y complementariamente ¿Cómo recuperar estados anteriores de los documentos cuando una serie de cambios resultan inapropiados o se requieren variaciones de base común?

Un enfoque para evitar conflictos es reservar-modificar-cambiar (lock-modify-unlock). Este enfoque no siempre garantiza la integridad o coherencia de un sistema cuando se trabaja con múltiples documentos y serializa el trabajo innecesariamente cuando se pudiera hacer cambios independientes. Otro enfoque es copiar-modificar-integrar (copy-modify-merge). El repositorio puede asistir en el manejo de documentos y sus cambios, pero una persona necesita hacer el análisis de si un conjunto de cambios es valido y los miembros de un equipo deben mantener una buena comunicación.

En el caso particular del software algunas de las áreas que soporta un SCM son:

        • Administración de versiones múltiples, permitiendo a usuarios y desarrolladores reportas defectos y cambios con relación a versiones históricas.

       

    • Administración de equipos de desarrollo, permitiendo que varios programadores trabajen en un mismo archivo e integrando los cambios.
    • Auditorias de cambios.

 

Los sistemas de control de versión trabajan con dos elementos base: áreas de trabajo y repositorios. Las áreas de trabajo es donde se hacen cambios y el repositorio es el lugar donde se guardan los documentos de referencia que sincronizan el trabajo de todos y define el estado de la información. El repositorio guarda metadata que permite rastrear cambios y versiones.
El paradigma central de control de versión es Pedir/Aplicar (check out/commit). Todos los documentos se almacenan en el repositorio. El programador registra una copia en su área de trabajo y procede a aplicar cambios a su copia. Cuando los cambios son estables, se aplican al repositorio de acuerdo a polí­ticas de administración de cambios y resolución de conflictos.

Dos conceptos importantes en la administración de cambios son ramas (branches) y etiquetas (tags). La ramificación del código permite mantener el desarrollo del sistema y liberar versiones de acuerdo a plataformas, características y pruebas; O para pruebas de código experimental. Etiquetas son similares a ramas pero puntos de referencia en la misma línea de desarrollo, no a una variante del mismo.

El abuelito y punto de referencia de los sistemas de control de versión es CVS, referenciado a scripts escritos por Dick Grune y publicados en comp.sources.unix en diciembre de 1986.

Sistemas de control de versión:
CVS
Subversion
Perforce (p4)
BitKeeper
VOODOO Server
ClearCase
RCS (Revision Control System)

Eclipse in ubuntu

Eclipse is a multi-language Integrated development environment (IDE) comprising a base workspace and an extensible plug-in system for customizing the environment. It is written mostly in Java. It can be used to develop applications in Java and, by means of various plug-ins, other programming languages including Ada, C, C++, COBOL, Fortran, Haskell, JavaScript, Perl, PHP, Python, R, Ruby (including Ruby on Rails framework), Scala, Clojure, Groovy, Scheme, and Erlang. It can also be used to develop packages for the software Mathematica. Development environments include the Eclipse Java development tools (JDT) for Java and Scala, Eclipse CDT for C/C++ and Eclipse PDT for PHP, among others.

The initial codebase originated from IBM VisualAge.[2] The Eclipse software development kit (SDK), which includes the Java development tools, is meant for Java developers. Users can extend its abilities by installing plug-ins written for the Eclipse Platform, such as development toolkits for other programming languages, and can write and contribute their own plug-in modules.

Released under the terms of the Eclipse Public License, Eclipse SDK is free and open source software (although it is incompatible with the GNU General Public License[3]). It was one of the first IDEs to run under GNU Classpath and it runs without problems under IcedTea.

Ubuntu, here are some steps that help you getting Eclipse working on Ubuntu

1. Install Sun Java JDK

#sudo apt-get install sun-java6-jdk

2.  Download Eclipse
You can go to official site http://www.eclipse.org/downloads/ and choose your edition,

Save to your Desktop

3. Extract Eclipse
Open Terminal, and execute:

#cd ~/Desktop
#tar xzf eclipse-php-galileo-linux-gtk.tar.gz (replace your downloaded file name here)
#sudo mv eclipse /opt/eclipse
#sudo mv eclipse-galileo.png /opt/eclipse
#cd /opt
#sudo chown -R root:root eclipse
#sudo chmod -R 755 eclipse
#cd /opt/eclipse
#sudo chmod +x eclipse

4. Create a .desktop file to eclipse:

gedit ~/.local/share/applications/opt_eclipse.desktop

Then, paste this inside (dont forget to edit Exec and Icon values):

[Desktop Entry]
Type=Application
Name=Eclipse
Comment=Eclipse Integrated Development Environment
Icon=** something like /opt/eclipse/icon.xpm **
Exec= ** something like /opt/eclipse/eclipse **
Terminal=false
Categories=Development;IDE;Java;
StartupWMClass=Eclipse

After that, open that folder with nautilus:

nautilus ~/.local/share/applications

If you want to use this launcher outside dash/launcher (ex: as a desktop launcher) you need to add execution permission by right clicking the file and choosing Properties -> Permissions -> Allow execution, or, via the command-line:

chmod +x ~/.local/share/applications/opt_eclipse.desktop

Finally drop opt_eclipse.desktop to launcher.


Uploaded on Oct 29, 2011

A short walkthrought of the Eclipse Software Development Kit.

Plugins used in this video:
1. PHPEclipse (http://www.phpeclipse.com/)
2. Aptana Studio (http://www.aptana.com/)
3. Subversive (http://www.eclipse.org/subversive/)

Uploaded on Nov 24, 2011

Tutorial showing installation, requirements and configuration of Eclipse itself and the PHPEclipse plug-in.

Link mentioned in the video regarding line endings: http://www.evolt.org/node/60247 (scroll to Linefeeds part)

Published on Mar 16, 2013

A short tutorial outlining the features of PHPEclipse.

 

Published on Mar 22, 2013

A quick walkthrough on all the goodies Aptana plugin for Eclipse provides when editing HTML, CSS and JavaScript code.

Link about Java 7 and FTP problems on Windows 7+ mentioned in the video: http://stackoverflow.com/questions/69…

 

Published on Apr 3, 2013

Quick tips and tricks to help you effectively tackle the most redundant activities during development – including extra safeguard tip using the Local History.

 

Published on May 10, 2013

Presentation of 2 ways I know of to work with FTP and synchronization in Eclipse:

1. utilizing Aptana’s remote synchronization (http://www.aptana.com)
2. using the not-yet-so-deprecated FTP and WebDav Eclipse plugin (http://jcraft.com, http://eclipse.jcraft.com)

Published on May 26, 2013

Quick introduction to remote versioning systems with a peek into Eclipse’s SVN interface and TortoiseSVN program.

Link to SourceForge: https://sourceforge.net/
Link to GitHub: https://github.com/
Link to the Timeline: Inventions project: https://sourceforge.net/projects/time…