SmartGit: "Present but defect"

|
Recientemente tuve que aprender a usar el sistema de versionamiento Git y como esclavo usuario de windows tenia que elegir clientes para poder interactuar con los repositorios de Github.

De entrada, hay que instalar el mysisgit que es la base, y con la cual se podria trabajar, yo opté por ir un poco más allá y tratar con un cliente grafico llamado SmartGit con el cual se pueden gestionar mas fácilmente los cambios entre ramas y archivos y con el cual jugué un poco antes de decidirme a implementarlo (ya que hasta el momento solo usaba el mysisgit sin nada más).

Mi sorpresa al instalar el SmartGit fué que no reconocía ninguno de mis repositorios y por más que intentaba dar de alta un repositorio local con el que ya habia comenzado a trabajar, ¡Simplemente no se podia! El mensaje que recibía en la parte del "folder tree" era: present but defect y ante mi sorpresa intente reiniciar el smartgit, reinstalarlo, etc hasta que por fin en un foro encontré la solución:

  1. Lo primero que hay que hacer es cerrar el SmartGit completamente (verificar que no se encuentre activo en el system tray).
  2. Descargar librerias de complemento para el SmartGit.
  3. Sustituir las librerias existentes en C:\Archivos de Programa\SmartGit\lib, con los archivos que se encuentran dentro. Despues de realizar este paso, es posible que ya medio funcione el SmartGit, pero no les listara sus archivos contenidos en las carpetas, si todo salió bien, al menos ahora les dirá que no puede abrir su .gitconfig (ubicado en C:\usuarios\nombre de usuario\)
  4. Una vez ubicado el .gitconfig, procedemos a ponerlo en otra ubicación o renombrarlo (casi estoy convencido de que éste es el unico paso necesario); y con ésto ya podremos listar los archivos y su estado en el SmartGit y aparentemente, el mysisgit sigue trabajando normalmente.
Es increíble como me estuve dando vueltas como 2 horas a éste problema y la solución solo me ocupó 5 minutos, espero les sea de utilidad.

MySQL: errno 1005

|
Si ejecutas un script de SQL y obtienes éste error como resultado, es debido a que tienes Foreign Keys (Claves Foráneas) con tipos de campos incompatibles entre sí:

CREATE TABLE IF NOT EXISTS `intranet`.`sefoe_departamentos` (
`iddepto` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT ,
`departamento` VARCHAR(255) NOT NULL ,
`iddepto_superior` BIGINT NOT NULL DEFAULT 0 ,
PRIMARY KEY (`iddepto`) ,
INDEX `contiene` (`iddepto_superior` ASC) ,
CONSTRAINT `contiene`
FOREIGN KEY (`iddepto_superior` )
REFERENCES `intranet`.`sefoe_departamentos` (`iddepto` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
COMMENT = 'Estructura organizacional de los departamentos'


A primera vista parece un código válido, pero fijense en los FK's:
iddepto es BIGINT SIN SIGNO e iddepto_superior unicamente es BIGINT, una pequeña variante tan pequeña como ésta puede arrojarnos el molesto ERRNO 1005.

También se encuentra el caso de que especifiques que en un ON DELETE vuelva NULL un campo que previamente se había declarado como NOT NULL.