6
votes

Peut git logiciel (par exemple gitbox, github, Sourcetree) utilise un repo à distance au lieu de local?

J'aime utiliser le logiciel Git pour pousser les engagements, mais ceux que j'utilise (Gitbox, Github, Sourcetree) Demandez tous un repo local lorsque vous y ajoutez une nouvelle répétition.

chose est, mon repo est sur mon serveur de développement, pas ma machine locale.

Ainsi peut-on git le logiciel d'utilisation d'un repo git distant en tant que repo de développement, puis appuyez sur celui-ci à votre repo principal (par exemple Github ou Bitbucket)?

Sinon, il semble que vous ne puissiez pas utiliser le logiciel et avoir à recourir à la ligne de commande sur SSH.

merci


2 commentaires

Les fichiers sur votre machine locale sont-ils modifiés? Comment développez-vous si les fichiers ne sont pas sur votre machine locale? Pouvez-vous exécuter une interface graphique git sur la machine distante et la tunnel à votre machine locale avec "SSH -X"?


J'utilise un éditeur qui modifie les fichiers d'édition via SFTP (CODA pour Mac). Je n'ai donc pas besoin de mes fichiers sur ma machine locale. J'utilise quelques machines pour développer, de même que vous souhaitez configurer MySQL / Apache / PHP sur tous et un repo sur chacun de mes projets, soyez un cauchemar. J'ai donc une machine de développement un accès de tous les autres. Je suis surpris que le logiciel Git ne peut pas traiter avec des repos distants comme la version de travail. Je ne sais pas de courir Git Guis sur la télécommande, je doute que je n'ai pas x ou quoi que ce soit comme ça en marche, c'est juste un serveur Web Centos.


5 Réponses :


6
votes

Une solution, qui ne s'appuie pas sur le front-extrémité pour prendre en charge la manipulation directe d'un repo à distance, serait de monter la télécommande sous forme de système de fichiers en réseau. Si vous n'avez qu'un accès SSH à la machine distante, vous pouvez essayer d'utiliser sshfs via fuse (sur Linux) ou OSXFuse sur Mac OS X. ou en fonction de vos préférences et la configuration, vous pouvez utiliser SMB, NFS, DAV ou un autre système de fichiers réseau.

Une autre façon de le faire, que j'apporte dans les commentaires, consiste à exporter le système de fichiers réseau de votre machine de développement sur votre serveur. Je fais cela afin que je puisse monter ma copie de travail actuelle sur plusieurs machines à la fois, et aussi que j'ai toujours une copie de travail locale même lorsque je ne suis pas connecté au serveur.

Vous écrivez:

Je suis surpris que le logiciel Git ne peut pas traiter avec des repos distants comme la version de travail.

La plupart des gites git font partie de leur travail en appelant la commande git . Pour qu'ils soutiennent le fonctionnement à distance, Core Git devrait également. Il est écrit dans un mélange de script C et Shell; Tout cela devrait être réécrit pour faire face aux fichiers distants.

Un éditeur de texte a un travail beaucoup plus facile; Il lit un fichier lorsque vous l'ouvrez et écrit lorsque vous enregistrez, tandis que Git lit et écrit de nombreux fichiers au cours d'une seule opération comme commettez . .

Un système de fichiers en réseau signifie que tous les outils (GIT et sinon) fonctionnent sur vos fichiers distants. Au lieu de construire une couche dans chaque application pour prendre en charge l'accès au fichier en réseau, ce faisant dans le noyau (ou via fusible), puis le traiter comme un système de fichiers local vous donne cet appui dans chaque application gratuitement.


5 commentaires

Si le logiciel GIT ne peut pas traiter avec des répéteurs à distance pour ma version de développement, cela ressemble à une bonne option, ajoutant la télécommande sous forme de lecteur réseau. Va regarder cela. Merci.


@LAURENCECOPECOPE Je suppose que la plupart des frontes Git ne peuvent pas fonctionner à distance, mais je n'ai pas d'expérience avec la plupart d'entre eux. En fait, j'ai tendance à le faire le chemin opposé; Exportez le répertoire de développement sur mon disque local sur les serveurs que je testez. J'utilise SMB à cette fin parce que je l'utilise déjà pour d'autres raisons, mais tout système de fichiers réseau devrait fonctionner.


Mise à jour: il semble que GitHub et Gitbox ne peuvent pas "voir" les fichiers .git lorsque la télécommande est montée sur un lecteur SSHFS. Je ne reçois aucun statut, ni aucune information sur le repo du tout :(. Je peux voir les fichiers .git dans le Finder ok cependant.


Est-ce que quelqu'un était capable d'utiliser réellement git de cette façon?


"... Pour qu'ils soutiennent l'opération à distance, Core Git devrait également." Ce n'est pas vrai du tout. GIT pourrait être installé sur la machine distante, le logiciel pourrait-il simplement y passer, exécuter toutes les commandes GIT dont il a besoin, puis mettez à jour l'UI localement. Je suis surpris que cet outil n'existe pas.



0
votes

J'ai trouvé un moyen facile pour moi: En transmission (client FTP), il existe une option pour «Montez Favoris comme disque». Sourcetree peut fonctionner comme prévu avec ce disque "virtuel".

Une limitation, cependant: vous pouvez monter le disque et démarrer Sourcetree uniquement après avoir effectué tout le changement de code modifié et prêt à être commis / poussez, il ne fonctionnera pas si vous conservez Sourcetree et SSH Disk monté tout en travaillant sur le code. Pour une raison quelconque, le disque monté par Transmit ne met pas à jour les fichiers Contenu Live, mais seulement après la démontie / Mont Action.


1 commentaires

J'ai déjà transmis.app sur mon bureau de l'essayer! Je vais lui donner un aller. Merci.



2
votes

N'oubliez pas que GIT est un DVCS . Le fait que vous ne vous connectez pas à un serveur distant pour commettre des choses est par design .

Ce que vous voulez faire est d'avoir des repos git locaux qui poussent le code à votre serveur d'intégration (celui qui exécute réellement le code). C'est comme le déploiement, seulement que vous déployez sur un serveur de test au lieu de la production.

Ceci est normalement réalisé en ayant un référentiel de git partagé que vous appuyez sur. Ce repo devrait être nue . Outre le repo partagé nu, vous voudrez un clone non nu de la répétition de GIT partagée qui servira de docomoot Apache.

Lorsque le repo partagé reçoit un commit, il rendra le docroot repo exécuter git tirer .

Ceci peut être réalisé en utilisant post- Recevez des crochets sur le repo partagé.

Le répétition de DOCROOT est extrait sur une branche spécifique (disons développer ). Donc, même si vous vous engagez à d'autres branches et que vous les poussez, le serveur ne sera pas affecté.

Ceci vous permet de configurer plusieurs référentiels de déploiement, de sorte que vous pourriez avoir une autre branche prod associée à l'un de ceux qui mettraient en réalité la mise à jour du code de production lorsque vous appuyez dessus.

Il vous permet également de stocker des travaux incomplets / en cours sur une succursale commune qui ne se déploie pas du tout, afin que vous sachiez que ce que vous travailliez sur votre ordinateur portable est en sécurité sur le repo partagé, même si Il ne peut pas être envoyé au serveur de test car il n'est pas complet et enfreindrait le serveur de test, ce qui rend les autres personnes incapables de travailler ou de quelque chose.

Cet article va en détail comment configurer tout cela. Je l'ai déjà fait avant, ça marche bien.


2 commentaires

Problème est que nous utilisons plusieurs machines locales pour développer. Que ce soit mon propre Mac ou un ordinateur portable, ou mes développeurs PCS et ordinateurs portables ou à la maison, etc. Nous ne voulons pas avoir à configurer des serveurs Web sur tous ceux-ci pour le développement local. Nous accédons tous donc au serveur Supprimer Dev pour travailler. Cela signifie que nous pouvons développer nos systèmes chaque fois que, où et ne pas avoir à vous soucier de la configuration de la machine que nous développons. Nous avons seulement besoin d'une IDE sur les machines locales. Nous nous connectons via SFTP et travaillez de cette façon. Configuration de tous nos sites de développement sur chaque machine que nous utilisons consiste à aller en arrière dans cet âge nuage à mon avis.


Dans la configuration que j'ai décrite, vous n'avez pas besoin de serveurs locaux. Vous aurez un serveur partagé, mais au lieu d'être modifié les fichiers via SFTP, vous engagez et appuyez sur. Le repo de GIT partagé s'occupera de déplacer les fichiers sur le serveur Web partagé.



0
votes

J'ai eu ce problème exact il y a environ un an - malheureusement, je n'ai pas pu trouver une réponse cohérente et fiable. J'ai googlé pendant des semaines, pensant que c'était mes termes de recherche qui n'ont pas réussi - essayer tous les sens.

[La configuration que nous avions eu auparavant que chaque développeur avait son propre serveur DEV - les avoir séparées des machines signifiait que des sites pourraient être développés n'importe où, des serveurs DEV pourraient être configurés pour être exactement les mêmes que les environnements vivants et le sysadmin pourrait conserver Les améliorées et sauvegardées - Je vois entièrement l'avantage d'avoir un serveur de développement distinct sur la machine de travail, avec l'un des rares récipients n'étant aucune application git!]

Tout ce qui dépend sur les montages de fichiers ou surprunter votre ordinateur en pensant qu'un lecteur distant est local pour la navigation de fichier général, mais les applications GIT ont tendance à se détendre lorsque la connexion est intermittente. D'autres fois, vous devez faire des choses d'une certaine manière, juste pour voir un statut git

Je sais que ce n'est pas la réponse que vous voulez entendre, car j'étais dans votre situation il y a un moment et sachez exactement ce que vous ressentez, mais la meilleure chose à faire est utiliser git sur la ligne de commande .

Je déteste être l'une de ces la ligne de commande est meilleur les répondeurs de dépassement de pile, mais dans cette situation, je n'ai pas pu trouver quoi que ce soit à zéro, à utiliser toute la journée chaque jour par plusieurs jours. Développeurs.

J'étais aussi contre elle à l'époque, je préfère le plus joli, plus facile à utiliser de l'interface utilisateur, mais depuis que j'apprends la ligne de commande et git, je n'ai jamais regardé en arrière. Lors du démarrage de mes propres projets à la maison, je me trouve à l'aide de terminal sur toutes les applications que je trouve beaucoup d'entre eux déroutant!

Cela aide non seulement à votre confiance de votre commande de commande, mais ma connaissance de la GIT s'est améliorée sur dix depuis l'utilisation du terminal, car les applications cachent souvent beaucoup d'événements.


1 commentaires

J'aime utiliser les commandes git dans le terminal, mais examiner le journal / START / DIFF dans la console est tellement mieux dans les outils visuels (extensions GIT, au-delà de la comparaison)



0
votes

7 ans plus tard, l'objectif est que GIT soit capable d'utiliser un disque virtuel, via VFS pour git < / a> .

Le système de fichiers virtuel pour GIT (anciennement GVFS) est un système open source qui permet à GIT de fonctionner à l'échelle de l'entreprise.
Il fait de l'utilisation et de la gestion des référentiels git massifs possible.

VFS pour GIT virtualise le système de fichiers sous votre référentiel git afin que les outils Git voient ce qui semble être un référentiel normal lorsque, en fait, les fichiers ne sont pas réellement présents sur le disque.
VFS pour GIT ne télécharge que les fichiers comme ils sont nécessaires.

Ce n'est pas (encore) une partie de Git elle-même, mais:

Pour cela, GIT 2.22 (Q2 2019) aidera à gérer un tel disque virtuel en introduisant un post-index-changement ", qui sera appelé Lorsque le fichier d'index sur disque change: cela peut aider, par exemple une mise en œuvre de l'arbre de travail virtualisé.

voir commettre 1956ecd (15 févr. 2019) par Ben Peart ( Benpeart ) .
(fusionné par Junio ​​C Hamano - Gitster - dans COMMIT 5795A75 , 25 avr. 2019)

lecture-cache : ajouter post-index-changement crochet

Ajouter un Post-Index-Change Crochet invoqué après l'écrit de l'index do_write_ocked_index () .

Ce crochet est destiné principalement à notifier et ne peut pas affecter le résultat des commandes GIT qui déclenchent l'écriture de l'index.

Le crochet est passé un drapeau pour indiquer si le répertoire de travail était Mis à jour ou non et un drapeau indiquant si un Skip-WorkTree Bit pourrait avoir changé.
Ces indicateurs permettent au crochet d'optimiser sa réponse à la notification de changement d'index.


0 commentaires