2010-04-10 14 views
4

J'ai besoin de quelques opinions ici.Pour garder ma propre application versionnée ou non

Je travaille sur un projet Django en utilisant buildout pour obtenir les dépendances, etc ... J'utilise mercurial comme DVCS.

maintenant ... Je dois personnaliser l'une des dépendances, donc je peux faire une des opérations suivantes: (* Les changements peuvent ne pas être utile pour tout le monde.)

1- Est-ce une fourchette de le projet dans (github, bitbucket, etc ...) maintient ma version, et obtient la dépendance avec la recette (mercurial ou git).
2- Cloner le projet, le placer dans le PYTHONPATH, effacer les répertoires DVCS et l'ajouter à la version de mes projets. Donc, chaque changement sera privé. Ici, j'ai besoin d'effacer toutes les informations de leur DVCS ou quelque chose.

Tout autre que vous pouvez penser.

Il me manque quelque chose? Je suis trop loin?

Merci!

+1

Il semble y avoir un downvoter pathologique dans nos midis. Je suppose qu'il y a une sorte de travail par lots qui résout cela? – spender

+4

Non, mais il existe plusieurs façons de corriger les downvotes. L'un d'eux est de poser de meilleures questions. –

+1

Ah oui, mais c'est tout à fait contre l'esprit de SO à downvote sans commenter. "Si vous voyez de la désinformation, votez en bas." Insérez des commentaires indiquant ce qui, en particulier, est faux. " – spender

Répondre

1

Esteban, prendre ces mesures: Je vais parler en mercurial-parler, mais cela est tout à faire en mesure git aussi.

  1. clone leur projet
  2. rendre votre clone de leur projet un subrepo dans votre projet

qui vous donne le meilleur de tous les mondes. Vous pouvez modifier le code de votre projet et de son projet sans faire attention à ce qui est, et quand vous validez les modifications de votre code, allez dans votre repo avec un pointeur vers un nouveau changeset dans votre clone de leur projet. Ensuite, quand vous voulez mettre à jour votre clone de votre projet, vous pouvez le faire en place et fusionner simplement.

Donc, c'est à peu près ce que vous avez dit dans « 1 » mais il n'y a pas besoin de faire une fourchette ou hôte qui repo publiquement.Il suffit d'éditer leur clone en tant que sous-projet de votre projet et ne jamais le pousser (ce qui ne fonctionnerait pas de toute façon puisque vous n'avez pas accès en écriture à leur repo).

L'inconvénient principal de votre option deux est que, lorsqu'ils modifieront et amélioreront leur projet dont vous dépendez, vous aurez du mal à les améliorer et à les fusionner avec les vôtres.

+0

Je ne connaissais pas les sous-états ... c'est génial ... merci! –

1

Eh bien, si vous utilisez DVCS alors tous vos commits sont conservés comme des ensembles de changement, et les gens peuvent choisir d'appliquer votre changement de jeu ou non. Donc, tant que vous commentez ce changement, les gens peuvent choisir d'appliquer le changement ou non comme ils l'entendent. De plus, s'ils ne veulent pas de ce changement, mais veulent d'autres changements, ils peuvent choisir. Donc, la vérité est le DVCS prend soin du problème pour vous (à condition que les gens tirant de vous utilisent le DVCS correctement).

Personnellement, je recommande le forking, mais comme je l'ai dit, ce n'est pas vraiment important.

1

Vous posez cette question d'une manière assez confuse, et je ne sais pas si vous comprenez vraiment le point d'un DVCS.

Le but d'un DVCS est de vous permettre d'avoir votre propre dépôt privé. Vous n'avez pas besoin de publier votre référentiel sur github ou bitbucket ou l'un de ces endroits, sauf si vous le souhaitez, mais je n'effacerais certainement pas les informations DVCS.

Si le projet en amont apporte des modifications que vous ne voulez en plus de vos propres changements privés, vous aurez un diable d'un temps leur fusion à moins que vous gardez les informations DVCS autour.

Mercurial, vous pouvez inclure un projet dans le vôtre en utilisant le Mercurial subrepo feature.

+0

Oui ... il se peut que je manque quelque chose ici. Comment puis-je ajouter un projet à mon repo qui a déjà des infos DVCS? Merci –

+0

@ Esteban, j'ai modifié ma réponse pour inclure une réponse à ce commentaire. – Omnifarious