IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GIT Discussion :

Ordinateur sans connexion internet: utiliser Android ?


Sujet :

GIT

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Par défaut Ordinateur sans connexion internet: utiliser Android ?
    Bonjour (bonsoir) tout le monde. Le problème que j'ai est certainement basique, mais il n'en demeure pas moins un problème.

    Je développe sur un Ubuntu ( un peu vieux, 16.04 ), qui n'a pas de connexion internet. Comme mon programme avance, je souhaiterais le mettre sur GitHub ( par exemple ). Je possède un mobile Android ( non rooté).

    Dans ma tête, il devrait être possible d'avoir l'équivalent d'un serveur local Git sur l'android et de temps en temps me rendre à un wifi public pour push les modifications.

    Je ne suis pas du tout un pro avec Git, même si je comprends parfaitement l'intérêt de ce genre d'outils.

    Ma question (mes questions) est (sont) donc la(les) suivante(s) :

    1. est-ce possible ?
    2. si oui, par où commencer ?


    Je précise que des recherches Google avec des mots clefs allant dans ce sens n'ont rien donné (les gens semblent se demander comment développer sur Android ou comment brancher Android studio avec Git).

    J'utilise Kate comme éditeur et je compile avec Git. Idéalement je cherche :

    1. un programme à installer sur mon Android
    2. des lignes de commandes à entrer.


    Je me rend compte, alors que j'arrive à la fin de ce message, que je semble faire une fixette sur Git et GitHub : ce n'est pas le cas. Je n'ai rien contre Sourceforge (sur lequel j'ai un compte et où j'ai posté des truc par le passé) et si vous avec une réponse à mon problème qui fonctionne sur Sourceforge, elle est bienvenue.

    Je vous remercie. Et je sais que cette question peut paraître stupide, mais c'est bien une étape par laquelle je dois passer.
    Bonne nuit.

  2. #2
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 548
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 548
    Par défaut
    j'arrive pas trop bien à comprendre le problème.
    Si vous développez un projet sans avoir accès internet le plus simple comme je fais moi-même c'est de faire des zip du projet régulièrement.
    Après si vous avez accès internet vous envoyez ce qui est nécessaire sur Git Hub
    Attention, comme je l'ai écris sur un autre fil de discussion c'est qu'à un moment Git Hub ça doit être payant, j'ai pas regardé de plus près mais vérifier
    Tiens par exemple ici

    Ensuite concernant SourceForge étant donné que ce n'est pas un site commercial comme GitHub je pense qu'il a tendance à tomber en désuétude..après l'idéologie du libre c'est un autre sujet

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Par défaut
    Oui, je fais déjà des zip que je stock un peu partout. L'intérêt d'un truc avec du subversion tout le baratin c'est que je pourrais facilement rollback les bêtises ( c'est-à-dire qu'il gardera l'historique), et en fait ce que je cherche c'est à publier, à passer à l'étape suivante. Est-ce qu'on peut garder l'historique des modifications et la vue "differencielle" ( où on a les deux fichiers côte-à-côte avec les lignes en rouge pour ce qui est enlevé, en vert pour ce qui est ajouté etc ) ?

    Il me semble que cette histoire de serveur de version a été créée justement pour sortir de l'ère où a la moindre modif il fallait tout retélécharger/réuploader.
    Et ça a été créé par Linus torvald, si ma mémoire n'est pas complètement naze.

    Bref, je cherche une solution plus propre que celle que j'ai ( qui se trouve être de faire des zip régulièrement ).

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Par défaut
    Et pour expliciter ce que je souhaiterais avoir comme situation.

    Je suis chez moi, sans accès internet en train de développer sur mon Ubuntu.
    Je modifie mon code, je test, je commit avec un commentaire, sur le pourquoi de la modif. Le commit part sur mon Android, branché à l'ordinateur via USB.
    Le soir j'estime que je suis satisfait de l'état X que j'ai atteint au cours de la journée. Oui, vraiment le commit 5342 était parfait. Je suis dix commit plus loin, mais depuis le programme est moins stable.
    Peu importe. Je sors de chez moi avec mon Android et je me rend à un wifi publique.
    Là je me connecte à Sourceforge, et je publie jusqu'à la version 5342. Tous les commit jusqu'à cette version deviennent visibles pour le monde entier, avec leurs commentaires et le différentiel des modifications.
    Je rentre chez moi et je continue à programmer, ou alors je rollback jusqu'à la 5342 et je repars de là.


    C'est, en gros, ce que je souhaiterais avoir.

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 527
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 527
    Par défaut
    Bonjour,
    Bonne nouvelle, à ma connaissance, Git est entièrement conçu pour faire tout ce que tu cherches à faire.

    Citation Envoyé par bubuche87
    Dans ma tête, il devrait être possible d'avoir l'équivalent d'un serveur local Git sur l'android et de temps en temps me rendre à un wifi public pour push les modifications.
    C'est exactement comme ça que cela marche par défaut.

    Contrairement à CVS, par exemple, Git est « acentralisé », c'est-à-dire qu'il n'utilise pas de serveur de référence a priori. Le point de repère est en fait le dépôt dans lequel on travaille (et qu'on peut même initialiser a posteriori si on a déjà commencé à développer dedans). Il est donc tout-à-fait possible d'utiliser Git pour gérer son propre versioning sans jamais partager ni publier en ligne, ce qui est déjà en soi une fonctionnalité très appréciable. Au passage, cela rend inutile le maintien manuel de *.ZIP à intervalles réguliers (ça reste une bonne idée de sauvegarder le dépôt entier pour éviter une panne disque ou une corruption de données).

    À cela s'ajoute une liste de « dépôts distants » — facultatifs — fonctionnant de la même façon mais avec lesquels l'instance locale de Git va communiquer. Et il peut y en avoir plusieurs. Ce n'est pas nécessairement un seul dépôt « parent ». On peut voir ça comme des stations radio-amateur toutes dotées d'un indicatif propre, ou comme des villes elles-mêmes entourées de villes voisines.

    Lorsque l'on crée un dépôt local, celui-ci est doté par défaut d'une branche « master » sur laquelle on va travailler. On peut en créer plusieurs autres, mais on va aussi et surtout récupérer l'état des branches des dépôts distants s'ils existent. Ce sont ces branches que l'on voit dans « remote ».

    On peut ensuite configurer une branche pour qu'elle « suive » l'état d'une autre, en principe distante. C'est cela qui va te permettre de faire « git push » ou « git pull » depuis une branche sans préciser explicitement ce qu'il faut transférer ni depuis ou vers où. Par contre, tu peux toujours le préciser expliciter au besoin.

    Lorsque tu fais git clone, à présent, pour récupérer un projet existant depuis un dépôt distant tel que Github ou Sourceforge (mais cela peut tout aussi bien être un répertoire local à ta machine), Git effectue les opérations suivantes :

    1. Il crée un répertoire au nom du projet (ou à celui qui te plaît si tu lui indiques) ;
    2. Il initialise ce répertoire avec l'équivalent de git init ;
    3. Il y déclare un dépôt distant : celui-là même que tu es en train de cloner, avec ses URL. Ce dépôt sera nommé origin sauf indication contraire ;
    4. Il récupère la liste de toutes les branches de ce dépôt, les déclare comme branches distante en local, et met à jour leur état (ie : sur quoi elles pointent à ce moment précis) ;
    5. Comme ces branches pointent des objets, cela provoque le rapatriement desdits objets et de ceux qu'ils pointent, ce qui in fine provoque le téléchargement du dépôt entier puisque l'on n'en possède encore aucun ;
    6. Il crée la branche master en local et, si elle existe de l'autre côté, la configure automatiquement pour qu'elle suive son homologue distante.


    C'est ainsi que tu te retrouves non seulement avec un dépôt cloné, mais également configuré pour pouvoir y contribuer directement. Cela en fait également — et de fait — un système redondant. Si le serveur original venait à être perdu par accident, il suffirait de « pousser » le dépôt local pour restaurer les données (au moins l'historique de développement. Le paramétrage du depôt distant serait sans doute à refaire).

    Dans ma tête, il devrait être possible d'avoir l'équivalent d'un serveur local Git sur l'android et de temps en temps me rendre à un wifi public pour push les modifications.

    — est-ce possible ?
    — si oui, par où commencer ?
    Le plus simple consiste à créer un projet vide sur Github (ou autre), le cloner sur ta machine avec git clone et travailler au quotidien sur ta machine dans ce dépôt.
    Le git push que tu imagines fonctionnera directement en l'état.

    Si tu as déjà du travail réalisé à insérer, le mieux est d'appliquer la procédure ci-dessus, copier tout ton projet dans le dépôt local fraîchement ouvert, faire un git add . à la racine de ce dépôt pour ajouter en une fois la totalité de ses fichiers, faire un git commit pour enregistrer le tout dans un commit initial et faire un git push pour envoyer le tout au serveur. Tu pourras ensuite continuer à travailler dessus hors-ligne et faire des pushes occasionnels lorsqu'une connexion est disponible, comme tu le souhaites.

    Si ton travail se trouve déjà dans un dépôt Git local mais qu'il n'est pas encore en ligne, c'est-à-peine plus compliqué : il suffit de créer là encore le projet sur Github (ou autre), d'ajouter à la main le site distant à ton dépôt et de configurer ta branche. Ça se fait en deux commandes.

    Je suis chez moi, sans accès internet en train de développer sur mon Ubuntu.
    Je modifie mon code, je test, je commit avec un commentaire, sur le pourquoi de la modif. Le commit part sur mon Android, branché à l'ordinateur via USB.
    C'est bien l'idée. Il est même possible de mettre des hooks en place si une action doit être menée chaque fois que l'on pushe ou pulle. Par exemple, publier sur un serveur web.

    Le soir j'estime que je suis satisfait de l'état X que j'ai atteint au cours de la journée. Oui, vraiment le commit 5342 était parfait. Je suis dix commit plus loin, mais depuis le programme est moins stable.
    En général, dans cette situation, on ajoute un tag sur le commit en question, tag qui portera justement le nom de la version associée et qui permettra de la retrouver directement. En plus, il reste possible de modifier le tag si on s'aperçoit que l'on ne l'a pas posé au bon endroit ou que l'on a oublié un commit de dernière minute avant de publier.

    Peu importe. Je sors de chez moi avec mon Android et je me rend à un wifi public.
    Là je me connecte à Sourceforge, et je publie jusqu'à la version 5342. Tous les commit jusqu'à cette version deviennent visibles pour le monde entier, avec leurs commentaires et le différentiel des modifications.
    Il y a plusieurs manières de le faire :

    • La manière normale de faire est de tout publier, et d'utiliser le tag pour indiquer quelle est la version officielle. Ça permet à la fois de sauvegarder ton travail et de le partager avec le reste d'une éventuelle équipe pour que vous soyez synchrones ;
    • L'autre manière consiste à utiliser la branche principale (master) pour les releases officielles et d'utiliser une branche distincte (généralement « dev » ou assimilé) pour les développements en cours. Une fois que tu es certain d'avoir atteint un état stable, tu fusionnes ta branche avec la principale et tu publies cette dernière. Tu peux ensuite poursuivre le développement sur la branche consacrée ;
    • Si tu veux n'utiliser qu'une seule branche et ne publier que jusqu'à une révision donnée, par exemple le commit #5342, tu fais un git push en indiquant explicitement le dépôt ciblé (en principe origin) et la révision à pousser : git push origin 5432 (ce dernier paramètre peut être un peu plus développé, pour indiquer sur quoi en particulier on souhaite pousser).


    Je rentre chez moi et je continue à programmer, ou alors je rollback jusqu'à la 5342 et je repars de là.
    Tant que tu continues à programmer, il n'y a aucun problème.

    Si tu veux revenir en arrière, c'est tout-à-fait possible mais tu vas être confronté aux problèmes de ré-écriture d'histoire et au fameux git push -f, décrié sur une branche officielle. Ce sera l'objet d'un prochain post. ;-)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Par défaut
    Merci beaucoup de confirmer que ce que je cherche n'est pas absurde, mais ça ne répond pas à mon principal problème : comment faire pour utiliser _Android_ comme l'appareil intermédiaire.

    Et je parle bien en pratique: en faisant des recherches sur le Google store avec "Git" je tombe sur plein de clients, mais aucun serveur.
    Est-ce que je fais une erreur ?
    Dans je fais un parallèle avec FTP, donc il me faut un serveur ( le truc qui écoute le port 21, sans interface graphique ) et pas un client ( le truc avec une interface graphique qui se connect au port 21 ).

    Et je parle de Google store, mais f-droid ne fais pas mieux.

    Et ça me surprend: le code d'un serveur est généralement très indépendant de la plateforme. Sauf la partie connexion proprement dite, le reste c'est de la bonne vieille algorithmie à l'ancienne, parfaitement portable avec un minimum d'efforts. Je devrais donc crouler sous les serveurs, chacun essayant de se vendre alors qu'il est à 99% identique à celui d'à-côtés ( puisque se contentant d'envelopper le même noyau open source ).

    C'est super-cool de savoir que c'est possible, reste maintenant à trouver l'outil qui le fait ( parce que je ne me sens pas d'aller recréer un serveur Git de A à Z )

Discussions similaires

  1. [Wamp] Utilisation sans connexion internet
    Par Dubydul dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 14/09/2009, 14h00
  2. naviguer dans un site web sans connexion internet
    Par ALIAS200 dans le forum Internet
    Réponses: 13
    Dernier message: 26/04/2009, 16h03
  3. Ganymede - Ajout de plugin sans connexion Internet
    Par klouhkpoum dans le forum Eclipse
    Réponses: 5
    Dernier message: 07/04/2009, 20h41
  4. Réponses: 2
    Dernier message: 30/06/2008, 10h27
  5. Réponses: 3
    Dernier message: 27/10/2006, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo