De SVN à Git

7 views
Skip to first unread message

Tranquiliste

unread,
Dec 27, 2009, 10:44:48 AM12/27/09
to Railsfrance
Bonjour,

Je sais que ça n'a pas de rapport avec Rails, mais j'ai un projet pour
lequel j'utilise SVN mais j'ai plein de problème et je n'arrive pas à
m'en sortir. Ca fait quelque temps que je songe à passer à Git qui
semble plus simple (surtout que de ce que j'ai compris, il ne génère
pas un répertoire .svn dans chaque dossier mais uniquement à la racine
du projet).

Ayant dit ça mon problème est de savoir quel est le meilleur moyen de
passez à Git, sachant que mon repository SVN distant n'est plus à jour
(et je n'arrive pas à le recaler) et que seul ce que j'ai en local sur
mon ordi est bon (mais avec tous les dossiers .svn).

Merci d'avance
Nicolas

Michel Belleville

unread,
Dec 28, 2009, 5:09:54 AM12/28/09
to rails...@googlegroups.com
Du moment que tu as un repository svn tu peux importer tout son
contenu (historique compris) dans un repository git.

Pour ça, le mieux est déjà de faire un fichier qui va "mapper" les
utilisateurs svn vers des utilisateurs git, la syntaxe est simplissime
:
login_sous_svn = Nom Sous Git <email...@git.com>

Puis d'importer le repository :
git svn --authors-file=/la/ou/tu/as/mis/ta/liste_des_utilisateurs.txt
clone svn://ou_est_range.net/ton/projet/sous/svn
nom_a_donner_a_ton_nouveau_projet_git

Michel Belleville


2009/12/27 Tranquiliste <nicolas...@googlemail.com>

> --
> Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de Google Groups.
> Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse rails...@googlegroups.com
> Pour résilier votre abonnement envoyez un e-mail à l'adresse railsfrance...@googlegroups.com

Tranquiliste

unread,
Dec 29, 2009, 4:31:45 AM12/29/09
to Railsfrance
Merci Michel,

Mon problème est que c'est la grouille dans mon repository et que seul
ce que j'ai en local est bon.
Je vais lire un ou 2 doc git pour comprendre comment ça marche et
comment alimenter un repository distant à partir de mon ordi.

Nicolas

On 28 déc, 11:09, Michel Belleville <michel.bellevi...@gmail.com>
wrote:


> Du moment que tu as un repository svn tu peux importer tout son
> contenu (historique compris) dans un repository git.
>
> Pour ça, le mieux est déjà de faire un fichier qui va "mapper" les
> utilisateurs svn vers des utilisateurs git, la syntaxe est simplissime
> :

> login_sous_svn = Nom Sous Git <email.s...@git.com>


>
> Puis d'importer le repository :
> git svn --authors-file=/la/ou/tu/as/mis/ta/liste_des_utilisateurs.txt
> clone svn://ou_est_range.net/ton/projet/sous/svn
> nom_a_donner_a_ton_nouveau_projet_git
>
> Michel Belleville
>

> 2009/12/27 Tranquiliste <nicolas.agut...@googlemail.com>

Michel Belleville

unread,
Dec 29, 2009, 4:47:54 AM12/29/09
to rails...@googlegroups.com
Tout dépend si tu veux perdre l'historique ou pas, mais si j'étais
toi, même si "ça grouille" dans ton dépôt rien ne t'empêche de faire
un commit avec ton état actuel et d'importer l'historique, ce sera
plus propre de tout point de vue.

Maintenant, comment faire un git à partir d'un projet sous svn, c'est
très simple :

$ cp -R /la/ou/est/ton/projet /la/ou/on/va/faire/le/depot/git
$ cd /la/ou/on/va/faire/le/depot/git
$ find ./ -name .svn -exec rm -Rf {} \;
$ git init
$ touch .gitignore

Ici, si j'étais toi, j'éditerais le .gitignore pour préciser quels
fichiers git ne doit jamais versionner, genre les fichiers de
configuration où il y a des passwords, etc. La façon "propre" de
fournir des fichiers de configuration par défaut c'est comme sous svn,
on donne un fichier d'exemple (par exemple au lieu de
config/database.yml je versionne un config/database.exemple.yml et
j'ignore le config/database.yml, et quand je clone le dépôt je cherche
tous les fichiers *.exemple.*, je les duplique en enlevant le .exemple
au milieu et je les édite avec les bonnes valeurs locales).

$ git add .
$ git commit -m "Migration de svn vers git."

Et hop, tu as un dépôt git tout fonctionnel avec tout dedans, et en
supposant que tu as un dépôt github :

$ git remote add origin g...@github.com:WhoeverYouAre/WhateverProject
$ git push origin master

Voilà, ton master est sur le dépôt gihub.

Michel Belleville

2009/12/29 Tranquiliste <nicolas...@googlemail.com>:

Frédéric Logier

unread,
Dec 30, 2009, 12:09:04 PM12/30/09
to rails...@googlegroups.com
Le mardi 29 décembre 2009 à 10:47 +0100, Michel Belleville a écrit :
> Tout dépend si tu veux perdre l'historique ou pas, mais si j'étais
> toi, même si "ça grouille" dans ton dépôt rien ne t'empêche de faire
> un commit avec ton état actuel et d'importer l'historique, ce sera
> plus propre de tout point de vue.
>
> Maintenant, comment faire un git à partir d'un projet sous svn, c'est
> très simple :
>
> $ cp -R /la/ou/est/ton/projet /la/ou/on/va/faire/le/depot/git
> $ cd /la/ou/on/va/faire/le/depot/git
> $ find ./ -name .svn -exec rm -Rf {} \;

svn export leprojetsvn leprojet

c'est plus propre :)


Michel Belleville

unread,
Dec 30, 2009, 12:16:32 PM12/30/09
to rails...@googlegroups.com
2009/12/30 Frédéric Logier <fre...@gmail.com>:

Ouais mais je ne sais pas pourquoi depuis que j'utilise git voir svn
en début de commande me fout des migraines ophtalmiques. Peut-être un
cancer du cerveau sélectif.

Michel Belleville

Tranquiliste

unread,
Jan 1, 2010, 12:20:43 PM1/1/10
to Railsfrance
Merci des ces informations.

Comme je vais faire des essais la semaine prochaine

Tranquiliste

unread,
Jan 5, 2010, 4:44:15 PM1/5/10
to Railsfrance
Bonjour,

Je commence à utiliser git, mais je me pose la question (avant de
faire un push sur mon remote repository) de savoir comment ignorer des
fichiers après coup (j'ai déjà fait un commit).
Dans le .gitignore à la racine, j'ai mis, entre autre: public/uploads/
** (pour éviter que ce répertoire et ses sous répertoires ne soient
envoyés) mais je ne sais pas si ça marche.
Est ce que j'ai utiliser la bonne méthode (je ne suis pas sur de la
syntaxe)?Y a-t-il un moyen de vérifier?

Merci

Alexis Perrier

unread,
Jan 6, 2010, 4:30:40 AM1/6/10
to Railsfrance
faut rajouter dans .gitignore
/public/uploads/*

Mais dans mon experience, si les fichiers ont deja ete commité, meme
si les repertoires sont dans .gtignore ils vont se retrouver dans
github
seul moyen que j'ai trouvé pour les enlever de github et de les
supprimer en local puis de re-commiter

mais il y a surement plus propre

On Jan 5, 10:44 pm, Tranquiliste <nicolas.agut...@googlemail.com>
wrote:

Cyril Mougel

unread,
Jan 6, 2010, 4:46:53 AM1/6/10
to rails...@googlegroups.com
Le 06/01/10 10:30, Alexis Perrier a �crit :

> faut rajouter dans .gitignore
> /public/uploads/*
>
> Mais dans mon experience, si les fichiers ont deja ete commit�, meme

> si les repertoires sont dans .gtignore ils vont se retrouver dans
> github
> seul moyen que j'ai trouv� pour les enlever de github et de les

> supprimer en local puis de re-commiter
>
> mais il y a surement plus propre
>

On peux supprimer le cache de ce ficher dans le repo

git rm my_file --cached

� ce moment le fichier est supprim� du repo mais pas de ton arborescence.

>
>
> On Jan 5, 10:44 pm, Tranquiliste <nicolas.agut...@googlemail.com>
> wrote:
>> Bonjour,
>>

>> Je commence � utiliser git, mais je me pose la question (avant de


>> faire un push sur mon remote repository) de savoir comment ignorer des

>> fichiers apr�s coup (j'ai d�j� fait un commit).
>> Dans le .gitignore � la racine, j'ai mis, entre autre: public/uploads/
>> ** (pour �viter que ce r�pertoire et ses sous r�pertoires ne soient
>> envoy�s) mais je ne sais pas si �a marche.
>> Est ce que j'ai utiliser la bonne m�thode (je ne suis pas sur de la
>> syntaxe)?Y a-t-il un moyen de v�rifier?


le .gitignore empeche juste que ca soit vu lorsque tu fais un git status
ou git add globale. Dans la pratique il n'emp�che aucun ajout de fichier
lors d'un commit. �a ne joue que sur le passage de unversionned �
unstage/stage.


--
Cyril Mougel
http://blog.shingara.fr/

Tranquiliste

unread,
Jan 6, 2010, 12:49:46 PM1/6/10
to Railsfrance
A priori j'ai réussi à configurer git et à initialiser mon repository
remote.
Maintenant j'ai un problème pour déployer avec webistrano/capistrano.

Au départ j'avais un message qui me disait et a priori en cherchant
il m'a semblé voir que en utilisant la version 2.5.2 de capistrano ça
marchait. Mais j'ai un message d'erreur à l'execution avec git
annonçant un code retour 32512 dont je n'ai pas trouvé la signication.

executing locally: "git ls-remote g...@git.assembla.com:notreimmeuble-
git.git master"
*** Could not save revision: Command git ls-remote
g...@git.assembla.com:notreimmeuble-git.git master returned status code
32512
* executing `deploy:update'
** transaction: start
* executing `deploy:update_code'
executing locally: "git ls-remote
g...@git.assembla.com:notreimmeuble-git.git master"
*** [deploy:update_code] rolling back
* executing "rm -rf /home/notreimmeuble/www/integration/releases/
20100106131835; true"
servers: ["ssh.alwaysdata.com"]
** [deploy:update_code] exception while rolling back:
Capistrano::ConnectionError, connection failed for: ssh.alwaysdata.com
(NoMethodError: undefined method `configuration_for' for
Net::SSH:Module)
*** Command git ls-remote g...@git.assembla.com:notreimmeuble-git.git
master returned status code 32512

Pour info voici le capfile généré avec webistrano
load 'deploy'

# ================================================================
# ROLES
# ================================================================


role :app, "ssh.alwaysdata.com"

role :db, "ssh.alwaysdata.com", {:primary=>true}

role :web, "ssh.alwaysdata.com"


# ================================================================
# VARIABLES
# ================================================================

# Webistrano defaults
set :webistrano_project, "notre_immeuble"
set :webistrano_stage, "integration"


set :application, "notreimmeuble"

set :deploy_to, "/home/notreimmeuble/www/integration/"

set :deploy_via, :export

set :keep_releases, "2"

set :password, "xxxxxx"

set :rails_env, "integration"

set :remote, "origin"

set :repository, "g...@git.assembla.com:notreimmeuble-git.git"

set :runner, "user to run as with sudo"

set :scm, "git"

set :scm_passphrase, "xxxxx"

set :scm_password, "xxxxxx"

set :scm_username, "xxxxx"

set :use_sudo, false

set :user, "notreimmeuble"

set(:branch) do
Capistrano::CLI.ui.ask "Please enter 'branch': "
end


# ================================================================
# TEMPLATE TASKS
# ================================================================

# allocate a pty by default as some systems have problems
without
default_run_options[:pty] = true

# set Net::SSH ssh options through normal variables
# at the moment only one SSH key is supported as arrays are
not
# parsed correctly by Webistrano::Deployer.type_cast (they end
up as strings)
[:ssh_port, :ssh_keys].each do |ssh_opt|
if exists? ssh_opt
logger.important("SSH options: setting #{ssh_opt} to: #
{fetch(ssh_opt)}")
ssh_options[ssh_opt.to_s.gsub(/ssh_/, '').to_sym] = fetch
(ssh_opt)
end
end

Cyril Mougel

unread,
Jan 6, 2010, 12:51:22 PM1/6/10
to rails...@googlegroups.com
Le 06/01/10 18:49, Tranquiliste a �crit :
> A priori j'ai r�ussi � configurer git et � initialiser mon repository
> remote.
> Maintenant j'ai un probl�me pour d�ployer avec webistrano/capistrano.
>
> Au d�part j'avais un message qui me disait et a priori en cherchant
> il m'a sembl� voir que en utilisant la version 2.5.2 de capistrano �a
> marchait. Mais j'ai un message d'erreur � l'execution avec git
> annon�ant un code retour 32512 dont je n'ai pas trouv� la signication.
>

Tu arrives � faire un clone du repo git sur ton serveur distant ?

Tranquiliste

unread,
Jan 6, 2010, 1:07:08 PM1/6/10
to Railsfrance

En fait non .
Il y avait un problème d'autorisation (The authenticity of host
'git.assembla.com (174.129.242.120)' can't be established) a moitié
résolu en répondant oui pour continuer mais ensuite il me demande un
mot de passe (g...@git.assembla.com's password:) et je ne voit pas ce
que c'est et bien sur après 3 essais j'ai l'erreur
Permission denied (publickey,password)
Je le trouve ou le mot de passe, j'ai essayé sans succès le mot de
passe de mon compte chez assembla, ma passprase? la public key c'est
celle que j'ai générée et qui se trouve dans le fichier id_rsa.pub
mais elle ne m'est pas demandé.

Merci d'avance pour votre aide
Nicolas

Cyril Mougel

unread,
Jan 7, 2010, 5:04:01 AM1/7/10
to rails...@googlegroups.com
Le 06/01/10 19:07, Tranquiliste a �crit :
>
>
> En fait non .
> Il y avait un probl�me d'autorisation (The authenticity of host
> 'git.assembla.com (174.129.242.120)' can't be established) a moiti�
> r�solu en r�pondant oui pour continuer mais ensuite il me demande un

> mot de passe (g...@git.assembla.com's password:) et je ne voit pas ce
> que c'est et bien sur apr�s 3 essais j'ai l'erreur
> Permission denied (publickey,password)
> Je le trouve ou le mot de passe, j'ai essay� sans succ�s le mot de

> passe de mon compte chez assembla, ma passprase? la public key c'est
> celle que j'ai g�n�r�e et qui se trouve dans le fichier id_rsa.pub
> mais elle ne m'est pas demand�.

>
> Merci d'avance pour votre aide
> Nicolas

Si tu es s�r la machine distante l'authentification se d�roule bien ?
Le probl�me est-il uniquement lorsque tu fais un clone par capistrano ?

Une solution alternative pour �viter de donner un acces m�me en lecture
de ton serveur distant est de d�ployer par copie.

set :deploy_via, :copy

Cela g�n�re en local un tar.gz de ton appli � la r�vision voulu et
ensuite l'envoi par scp.

Tranquiliste

unread,
Jan 11, 2010, 5:46:14 AM1/11/10
to Railsfrance
Pour info, mon problème est résolu. Cela veniat du fait que j'avais
mal déclaré ma clé privée/publique chez mon hébergeur.

Merci de votre aide et un merci spécial à Julien pour son aide via
mail.
Nicolas

Reply all
Reply to author
Forward
0 new messages