2011-07-08 5 views
0

En utilisant TortiseSVN vous pouvez mettre à jour/valider un seul répertoire en cliquant droit sur le répertoire et en sélectionnant mise à jour ou validation.git-svn commettre un seul répertoire?

J'aime vraiment la puissance de branchement de git, mais si j'utilise git svn dcommit il va essayer de mettre à jour l'ensemble du dépôt, qui dans notre cas a plusieurs projets dedans. Comment puis-je valider uniquement des fichiers/répertoires spécifiques?

Merci!

EDIT

Pour clarifier ce que les prises en pension SVN ressemblent:

+- Trunk 
| 
+-+- Project 1 
| | 
| +- Project 1 files... 
| 
+-+- Project 2 
| | 
| +- Project 2 files.. 
| 
+-+- My Project 
    | 
    +- My Project files... 

Et quand je lance git svn dcommit il tente de mettre à jour tout en Project 1, 2 et My Project.

Les projets 1 et 2 sont complètement indépendants et en cours de développement par d'autres. Comment éviter la mise à jour/l'engagement des autres projets? Est-ce que j'ajoute simplement ces dirs à .gitignore? Et si je devais plus tard travailler sur ces autres projets? Sinon, existe-t-il une meilleure façon d'utiliser git svn pour travailler avec ce type de dépôt Subversion?

+0

http://stackoverflow.com/questions/3334475/git-how-to-update-checkout-a-single-file-from-remote-origin-master –

Répondre

0

git add le répertoire que vous voulez, engager et ensuite faire la dcommit (après la cueillette des cerises appropriée)

Je ne vois pas comment le problème d'avoir plusieurs projets entre en jeu. Vous ajouterez les fichiers dans votre projet concerné et en les ajoutant. Ne comparez pas commit dans SVN au dcommit ici. Comparez commit dans SVN à la validation dans Git. Juste comme vous "clic droit sur le répertoire" et le commettre, git add (ou utiliser TortoiseGit et faire la même chose que vous faites dans TortoiseSVN) seulement ce répertoire et valider. Ensuite, faites le dcommit.

+0

effectivement je suis habitué à git, ils utilisent SVN ici ... et il peut être un flux de travail SVN assez pauvre. Je ne pense pas que cela soit applicable, cependant, puisque je ne contrôle pas le dépôt distant. –

+0

@Wayne Werner - Mon PS n'était pas bien libellé, je l'ai supprimé. – manojlds

-1

Lorsque vous effectuez un git svn dcommit, chaque validation dans votre repo git local sera validée en tant que validation distincte dans votre télécommande svn. Si vous voulez faire en un seul commit voir cette question: Is it possible to make git svn dcommit result in a single svn commit? et aussi se référer à la section Rewriting History du livre ProGit et le chapitre Interactive Rebasing du livre de la communauté Git.

+0

quel problème avec la réponse? Pouvez-vous s'il vous plaît laisser un commentaire? – yasouser

+0

Eh bien, je n'ai pas downvote, mais je ne demandais pas de faire quelque chose comme 'git merge --squash' suivi de' git svn dcommit'. Ma question était de savoir comment je pouvais commettre (ou mettre à jour) un 'fichier unique '. Apparemment, c'est une pratique assez courante ici de stocker plusieurs projets dans un dossier 'trunk', donc pour éviter de jeter un œil sur le dépôt entier (comme essayer de cloner tous les projets sur github, par exemple), ils checkout/dans des répertoires spécifiques des dossiers. J'essaie de savoir si c'est possible avec git svn, et comment le faire. –

+0

@ Wayne-Werner: Voulez-vous maintenir un dépôt par projet? Si oui, certains fichiers et/ou dossiers n'auront-ils pas plusieurs états/historiques selon les projets auxquels ils appartiennent? L'alternative est d'utiliser '.gitignore' et d'ajouter les fichiers/dossiers qui ne font pas partie de chaque projet. Vous devez ensuite le modifier lorsque des projets sont ajoutés/supprimés de la commande svn remote. – yasouser

Questions connexes