Forum: Rails France De SVN à Git

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
4f81c4625f783336298267bb2dcfc8e3?d=identicon&s=25 Tranquiliste (Guest)
on 2009-12-27 16:45
(Received via mailing list)
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
047a4fc673336a70a6b58338bc6d677d?d=identicon&s=25 Michel Belleville (Guest)
on 2009-12-28 11:11
(Received via mailing list)
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.sous@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.aguttes@googlemail.com>
4f81c4625f783336298267bb2dcfc8e3?d=identicon&s=25 Tranquiliste (Guest)
on 2009-12-29 10:32
(Received via mailing list)
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>
047a4fc673336a70a6b58338bc6d677d?d=identicon&s=25 Michel Belleville (Guest)
on 2009-12-29 10:49
(Received via mailing list)
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 git@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.aguttes@googlemail.com>:
3c75327133edef1a398f48a3566b0f7b?d=identicon&s=25 Frédéric Logier (Guest)
on 2009-12-30 18:10
(Received via mailing list)
Le mardi 29 décembre 2009 à 10:47 +0100, Michel Belleville a écrit :
> $ find ./ -name .svn -exec rm -Rf {} \;
svn export leprojetsvn leprojet

c'est plus propre :)
047a4fc673336a70a6b58338bc6d677d?d=identicon&s=25 Michel Belleville (Guest)
on 2009-12-30 18:18
(Received via mailing list)
2009/12/30 Frédéric Logier <fredix@gmail.com>:
>> $ cd /la/ou/on/va/faire/le/depot/git
>> $ find ./ -name .svn -exec rm -Rf {} \;
>
> svn export leprojetsvn leprojet
>
> c'est plus propre :)

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
4f81c4625f783336298267bb2dcfc8e3?d=identicon&s=25 Tranquiliste (Guest)
on 2010-01-01 18:21
(Received via mailing list)
Merci des ces informations.

Comme je vais faire des essais la semaine prochaine
4f81c4625f783336298267bb2dcfc8e3?d=identicon&s=25 Tranquiliste (Guest)
on 2010-01-05 22:45
(Received via mailing list)
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
Ded69cf5d54a478f0e2301f5aac80a92?d=identicon&s=25 Alexis Perrier (Guest)
on 2010-01-06 10:31
(Received via mailing list)
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>
2fd0206c71a1b22a9cc6293f38537461?d=identicon&s=25 Cyril Mougel (shingara)
on 2010-01-06 10:47
(Received via mailing list)
Le 06/01/10 10:30, Alexis Perrier a écrit :
>
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.

>> ** (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.
4f81c4625f783336298267bb2dcfc8e3?d=identicon&s=25 Tranquiliste (Guest)
on 2010-01-06 18:50
(Received via mailing list)
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 git@git.assembla.com:notreimmeuble-
git.git master"
*** Could not save revision: Command git ls-remote
git@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
git@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 git@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, "git@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
2fd0206c71a1b22a9cc6293f38537461?d=identicon&s=25 Cyril Mougel (shingara)
on 2010-01-06 18:52
(Received via mailing list)
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 ?
4f81c4625f783336298267bb2dcfc8e3?d=identicon&s=25 Tranquiliste (Guest)
on 2010-01-06 19:07
(Received via mailing list)
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 (git@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
2fd0206c71a1b22a9cc6293f38537461?d=identicon&s=25 Cyril Mougel (shingara)
on 2010-01-07 11:04
(Received via mailing list)
Le 06/01/10 19:07, Tranquiliste a écrit :
> 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.
4f81c4625f783336298267bb2dcfc8e3?d=identicon&s=25 Tranquiliste (Guest)
on 2010-01-11 11:47
(Received via mailing list)
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
This topic is locked and can not be replied to.