Tag Archives: Desarrollo

Utilizando ECLIPSE para programar python en entorno git

A modo de chuleta, una vez más, os pongo los pasos necesarios para trabajar con Eclipse, EGit y PyDev.

1. Instalar Eclipse Classic.

2. Iniciar Eclipse, y deberías ver una pantalla similar a:
eclipse classic

3. Instalar PyDev desde Eclipse. Para ello, en la pantalla anterior, pulsa sobre la flecha de la derecha. Aparecerá una pantalla de este tipo:
eclipse workspace

A continuación ve al menú Help -> Install new software.
eclipse install new software

Selecciona “Add” y añade la siguiente URL en el campo “Location”:

http://pydev.org/updates

select pydev for eclipse

Selecciona la opción “PyDev for Eclipse”. No selecciones la opción “PyDev Mylyn Integration”. Solo queda pulsar “siguiente, siguiente, siguiente” y reiniciar eclipse.

4. Configurar PyDev desde Eclipse:
Ve al menú “window -> preferences”, expande “PyDev” y selecciona “Python Interpreter”. Deberías ver algo asi:
pydev configure eclipse

Debes añadir un nuevo intérprete, indicando la ruta donde tienes instalado python:

python pydev eclipse configuration

Selecciona todos MENOS el PySrc y python31.zip. Pulsa ok tantas veces como sea necesario y termina el proceso. Ya estás listo para programar en python usando eclipse.

5. Instalar EGit desde Eclipse
El proceso para instalar egit es muy similar al descrito en el paso 3, simplemente usa la siguiente url en el campo “location”:

http://download.eclipse.org/egit/updates

6. Escribiendo tu primer programa python:
Ve al menú “Window > Open Perspective > Other…” y elige “Pydev”, entonces haz click en ‘ok’. Si te fijas en la esquina superior derecha verás que la perspectiva ha cambiado de “java” a “pydev”
pydev perspective eclipse

pydev perspective eclipse

7. Creando un proyecto nuevo:
Ve a “File > New > Pydev Project” para empezar un asistente.
En la siguiente pantalla, introduce el nombre del proyecto y selecciona como tipo “python 3.0″. Asegúrate de que las opciones “create default ‘src’ folder” y “add it to the pythonpath?” están seleccionadas. Haz click en Finish.
python project eclipse
python project eclipse

8. Creando un módulo nuevo:
“File → New → Pydev Module”
eclipse new python module

Si miras en el “Package Explorer” verás un icono con tu nuevo fichero dentro de la carpeta ‘src’ (carpeta que creó Eclipse cuando hiciste el proyecto en el paso anterior).
python package eclipse

9. Ejecución de tu primer programa:
Vamos a hacer un “hello world” en python. Para ello simplemente escribe print(‘Hello, World!’) en tu fichero. Guárdalo (ctrl+S) y para ejecutarlo, simplemente ve a “run as > python run”:
python program run

10. Añadir tus ficheros a repositorio GIT:

Seleccionado el proyecto que deseamos añadir, pulsamos botón derecho y “Team -> Share Project”
egit eclipse share project

Marcamos la opción GIT y pulsamos “next”:
select repository git

Seleccionamos el proyecto a añadir y pulsamos Create para crear el nuevo repositorio GIT:
eclipse new git repository

A continuación pulsamos “Finish”:
eclipse new git repository finish

El proyecto está marcado ahora con el texto “[MASTER]“, que indica que los ficheros pertenecen a la rama principal del repositorio GIT. Los interrogantes al lado de algunos archivos (en la imagen los archivos .classpath y .project) indican que esos archivos no pertecen aun al repositorio git:
master repository

Para hacer que pertenezcan (y se cambie el interrogante por un signo “+”) debemos trackear el proyecto. Para ello seleccionamos el proyecto, botón derecho, “Team > Track”
team track git project eclipse

Es muy probable que tengamos ficheros que NO deseemos que se añadan al track. Para ello creamos un fichero llamado .gitignore e introducimos aquéllos ficheros que NO deseamos que pertenezcan. Imaginemos que todos ellos estan en una carpeta llamada ignoredfolder. Pues en el fichero .gitignore escribiremos ignoredfolder. A continuación añadimos .gitignore al control de versiones.

Podemos añadir exclusiones más generales (por ejemplo si nuestra configuración de una BD, nombres de usuarios y passwords estan en un fichero llamado .settings en todos nuestros proyectos, o queremos excluir todos los ficheros .zip) podemos utilizar el menu: Preferences > Team > IgnoredResources

egit ignored resources menu

Ahora debemos hacer un commit de los cambios. Para ello Team > Commit:
team commit egit eclipse

Debes insertar un mensajes explicando tus cambios. La primera linea (separada por una linea en blanco) se convertirá en el “short log” para este commit. Por defecto el autor y el committer se cogen del fichero .gitconfig de tu directorio home del proyecto. Puedes, además, marcar “Add Signed-off-by” para añadir un tag Signed-off-by. Al enviar cambios de otros autores puede ser conveniente alterar el campo autor para insertar los datos de nombre y mail del autor. Pulsa commit para enviar los cambios.

commit changes egit eclipse

Ahora han cambiado los “+” que aparecían al lado de los archivos por otro icono:
changes commited egit eclipse

Para mostrar el HISTORIAL de un fichero, puedes pulsar botón derecho y luego “Team > Show Local History”:
resource history egit eclipse

Esto es lo básico. Podéis leer mucho más en los enlaces de abajo ;-)

___________
Más información sobre pydev y eclipse (en inglés) en http://www.rose-hulman.edu/class/csse/resources/Eclipse/eclipse-python-configuration.htm.

Más información sobre egit para eclipse (en inglés) en http://wiki.eclipse.org/EGit

Creando un repositorio GIT a partir de las fuentes

De cara al desarrollo de aplicaciones es muy interesante tener algún software de control de versiones, tipo Subversion o GIT.

Os comento a modo de “chuleta” cómo hacer esto desde las fuentes.

Para ello, algunas consideraciones preliminares:

Servidor y SO: Linux myserver.com 2.6.18-194.3.1.el5 #1 SMP Sun May 2 04:17:42 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
Archivos de código: /soft/cds-invenio
Versión de GIT: git-1.6.6.2 (instalado desde las fuentes)

Asumo que la instalación de GIT es simple y podéis hacerla vosotros mismos sin ayuda. Hay muchísimos manuales indicando cómo hacerlo (usad google).

Una vez instalado GIT, procedemos:

# Creamos el archivo de configuracion del gitweb....
[root@aneto cds-invenio]#vi /etc/gitweb.conf
# ----------------------------------------------------------------------------
#
# gitweb.conf
#
# Configuration file for the web interface to GIT.
#
# This file is a Perl script that is executed by the gitweb interface
# after the defaults are set.  To override a setting, just uncomment
# it here and set it to the appropriate value.
#
 
# Core git executable to use.
# This can just be "git" if your webserver has a sensible PATH.
#our $GIT = "/path/to/git";
 
# Absolute fs-path which will be prepended to the project path.
# This is where your GIT repositories live in.
# ESTA VARIABLE ES FUNDAMENTAL!!!
our $projectroot = "/soft/git";
 
# Target of the home link on top of all pages.
#our $home_link = $my_uri || "/";
 
# String of the home link on top of all pages.
our $home_link_str = "view projects";
 
# Name of your site or organization to appear in page titles.
# Replace this with something more descriptive for clearer bookmarks.
#our $site_name = ""
 
# Filename of HTML text to include at top of each page.
# Must be an absolute filename (i.e., not relative to htdocs).
#our $site_header = "";
# HTML text to include at home page.
# Must be an absolute filename (i.e., not relative to htdocs).
#our $home_text = "/gitweb/indextext.html";
# Filename of HTML text to include at bottom of each page.
# Must be an absolute filename (i.e., not relative to htdocs).
#our $site_footer = "";
 
# URI of the stylesheet to use.
our $stylesheet = "/git/gitweb.css";
# URI of GIT logo (72x27 size).
our $logo = "/git/git-logo.png";
# URI of GIT favicon, assumed to be image/png type.
our $favicon = "/git/git-favicon.png";
 
# URI and label (title) of GIT logo link.
#our $logo_url = "http://git.or.cz/";
#our $logo_label = "git homepage";
 
# Source of projects list.
#our $projects_list = "";
 
# Show repository only if this file exists.
# Only effective if this variable evaluates to true.
#our $export_ok = "";
 
# Only allow viewing of repositories also shown on the overview page.
#our $strict_export = "";
 
# List of git base URLs used for URL to where fetch project from,
# i.e. full URL is "$git_base_url/$project"
#our @git_base_url_list = grep { $_ ne '' } ("/some/url");
# --------------------------------------------------------------------------------

Entonces añadimos al archivo de configuración de Apache algunas líneas útiles (el directorio /var/www/cgi-git/gitweb y /var/www/html/git deben existir):

[root@aneto cds-invenio]# vi /etc/httpd/conf/httpd.conf
# Añadir:
Alias /gitweb "/var/www/cgi-bin/gitweb/"
<Directory "/var/www/cgi-bin/gitweb">
            Options Indexes FollowSymlinks ExecCGI
            AllowOverride None
            Order allow,deny
            Allow from all
</Directory>
Alias /git "/var/www/html/git"
<Directory "/var/www/html/git">
            Options None
            AllowOverride None
            Order allow,deny
            Allow from all
</Directory>

Y procedemos a reinicar apache y crear el nuevo repositorio GIT…

[root@aneto cds-invenio]#/etc/init.d/httpd restart
 
[root@aneto cds-invenio]# cd /soft/cds-invenio
[root@aneto cds-invenio]# git init
[root@aneto cds-invenio]# git add .
[root@aneto cds-invenio]# git commit -m "inicialización del repositorio"

Una vez hecho esto, editamos algunos archivos de los que GIT ha creado (añadir información a ‘description’ y a ‘config’).

[root@aneto cds-invenio]# vi /soft/cds-invenio/description 
[root@aneto cds-invenio]# vi /soft/cds-invenio/config
--------------------------------------------------------
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        worktree = /soft/cds-invenio
        owner = "Miguel Martin"

A continuación clonamos sólo los datos de GIT en un fichero .git:

[root@aneto cds-invenio]# cd /soft/cds-invenio/
[root@aneto cds-invenio]# git clone --bare cdsinvenio cdsinvenio.git

Podemos probar a cargar en nuestro servidor esta url: http://myserver.com/cgi-bin/gitweb.cgi y ver si aparece algo… Puede que se produzcan fallos con gitweb.js si está en el directorio /cgi-bin/gitweb… si es el caso podemos editar gitweb.cgi y modificar la RUTA al gitweb.js.

# Editamos el gitweb.cgi porque hay fallos en el JS:
[root@aneto cds-invenio]# vi /var/www/cgi-bin/gitweb/gitweb.cgi
 
 # URI of stylesheets
 our @stylesheets = ("/var/www/cgi-bin/gitweb/gitweb.css");
 # URI of a single stylesheet, which can be overridden in GITWEB_CONFIG.
 our $stylesheet = undef;
 # URI of GIT logo (72x27 size)
 our $logo = "/var/www/cgi-bin/gitweb/git-logo.png";
 # URI of GIT favicon, assumed to be image/png type
 our $favicon = "/var/www/cgi-bin/gitweb/git-favicon.png";
 # URI of gitweb.js (JavaScript code for gitweb)
 our $javascript = "/git/gitweb.js";
 
 # URI and label (title) of GIT logo link
 #our $logo_url = "http://www.kernel.org/pub/software/scm/git/docs/";
 #our $logo_label = "git documentation";
 our $logo_url = "http://git-scm.com/";
 our $logo_label = "git homepage";

Y ahora copiamos el js a su lugar…

#Copiamos el Js a /var/www/html/git
cp /var/www/cgi-bin/gitweb.js /var/www/html/git/

# Hacemos un PUSH de todo…
[root@aneto teresa]# git push –all /soft/git/cdsinvenio.git

Y voilá! Nuestro repositorio git con todo accesible desde http://myserver.com/cgi-bin/gitweb.git

Algunos enlaces interesantes…
link 1 (en)
link 2 (en)
link 3 (es)
link 4 (es)