本人学生党,现在和几个同学一起开发,打算用git
目前git搭建好裸仓库了,并且hooks可以自动同步到web项目中.
由于服务器上的代码不是仓库,现在想要将原先另一个服务器上的代码导入到裸仓库上,然后供团队成员去pull。该如何做?自己想到的办法就是先将代码拉到本地,然后再从本地push到中央仓库,由于做了自动同步,所以中央仓库则自动将push的代码同步到web项目。但个人感觉应该有更好的方法。求告知?
还有就是一般git的使用仓库是整个项目吗?还是项目中的部分?如果是整个项目,用户上传图片那岂不是每次更新还要将上传的图片更新到本地。
查了挺久资料的,也很少讲这方面的,求各位大神详解。
===========================
您好,就现在我们团队在项目中出现了一个问题就是,由于5.1期间项目出了个bug,有个同学在家里修改了bug,但他的电脑没装git,所以使用ftp上传了。现在由于使用ftp上传所以没有使用到中央仓库自然就没有触发到hooks的post-reveice也就不会push到网站项目中(有点绕,望大神能理解),所以现在使用git就无法获取拉取到他所上传的那一部分。所以现在的问题就是我要写多一个hooks,网站项目上的一旦改变(如果是ftp上传的)则pull到中央仓库,然后本地才能获取。做到中央仓库和网站项目能双向同步。可能我们这种做法不太好,但是目前暂时只能这么做,当然也希望大神回答是顺带提供下好的方法。再次谢过
La description du problème n'est pas très claire, je vais donc décrire brièvement ce que je comprends.
La méthode de migration du code ne pose aucun problème.
Généralement, l'entrepôt utilisé par git est l'intégralité du projet, qui peut contenir certains sous-modules.
Ce que vous avez dit à propos du téléchargement d'images par les utilisateurs est en fait une autre question. Avez-vous synchronisé l'entrepôt du projet git avec le serveur et l'avez-vous utilisé comme répertoire du projet Web ?
Si c'est le cas, il y aura un petit problème. Tout d'abord, une meilleure approche est que l'entrepôt git n'est utilisé que pour le développement. Quant à la publication et au déploiement de projets Web, utilisez Jenkins et autres pour le faire. le processus est :
Les développeurs de projets déclenchent le webhook de github via des opérations, telles que l'envoi de code, le balisage, etc.
Github demande votre outil de déploiement en fonction de la configuration du webhook et informe votre outil de déploiement d'effectuer davantage l'action de publication.
L'outil de déploiement extrait le dernier code dans le répertoire de code, conditionne le projet Web via des scripts ou des commandes, génère un nouveau répertoire de projet Web et le publie sur le serveur.
Dans ce cas, les images de l'utilisateur sont téléchargées dans le répertoire du projet sur le serveur au lieu du répertoire du code git, il n'y a donc pas lieu de s'inquiéter de la mise à jour des images téléchargées.
De plus, il peut y avoir des problèmes de sécurité lors de la publication d'un référentiel de code en tant que projet Web. Si les droits d'accès ne sont pas bien contrôlés, d'autres personnes peuvent obtenir les fichiers de votre projet git, ce qui peut divulguer certaines informations.
La méthode que vous avez mentionnée est une très bonne méthode. Les deux entrepôts distants ne peuvent pas communiquer directement entre eux et doivent être transférés.
Bien sûr, les images des utilisateurs, le cache, etc. doivent être ignorés et seuls les codes valides sont stockés dans l'entrepôt.
En fait, le dossier
.git
contient toutes les informations, vous pouvez le copier directement. Mais git a des commandes pour faire çaCette opération est fondamentalement la même que l'opération suivante :
Téléchargez ensuite le
my_project.git
obtenu sur le serveur où se trouve l'entrepôt nu (remplacez le dossier). La documentation git donne une introduction très détaillée :Git-on-the-Server-Getting-Git-on). -un-serveur.
Quant à la deuxième question, n'hésitez pas à ajouter l'projet entier à git pour la gestion, y compris les fichiers de ressources, les documents, etc. Cela facilitera la collaboration des équipes. Mais n'incluez pas les fichiers générés par la compilation. Ceci est défini via .gitignore. Quant à la question de la mise à jour des images, si l'image est une ressource à utiliser dans ce projet, alors elle sera naturellement récupérée. Il n'y a aucun problème.
Il existe également des équipes qui ajoutent la configuration IDE générée automatiquement sous le projet à la gestion des versions. Si les membres de l'équipe utilisent tous le même IDE, ils peuvent partager les paramètres.
============
Attendez, pourquoi "L'entrepôt central synchronise automatiquement le code push avec le projet Web", je pense que vous devriez faire référence au service Web en cours d'exécution, et le serveur de build doit avoir un entrepôt local non modifié, soumettez activement à l'entrepôt de code
pull
, puis démarrez la build en fonction du dernier code et actualisez le service Web ou le package en fonction des résultats de la build. Cette action peut être déclenchée par des hooks, mais les référentiels de code publics ne doivent pas l'initierpush
.