Je voulais soumettre un diff pour examen, pour un projet Open Source.
J'ai obtenu le code en utilisant SVN (depuis le terminal, Ubuntu). Et j'ai fait des modifications mineures dans quelques fichiers. Maintenant, je ne souhaite soumettre qu'une seule modification. Les autres modifications que j'ai apportées concernaient le débogage et ne sont plus nécessaires.
J'ai généré un diff en utilisant svn di > ~/os/firstdiff.diff
Donc ma question, comment rejeter mes modifications locales?
Existe-t-il un moyen SVN de le faire? Sinon, je devrai aller dans chaque fichier et supprimer toutes mes modifications. Ensuite, je générais un nouveau diff et le soumettais.
Vous devez annuler toutes les modifications à l'aide de la commande svn revert :
svn revert foo.c
svn revert --recursive .
la source
svn revert --recursive .
me aide beaucoup .--recursive
paramètre annule tous les changements locaux et c'est la question.Pour ignorer les modifications locales dans un fichier particulier:
Pour ignorer les modifications locales dans un dossier particulier:
la source
Simple
svn revert
était suffisant pour l'affiche originale. Cependant, un simplesvn revert
ne suffira pas dans le cas plus général où vousLa suggestion de @ ErichBSchulz d'utiliser
git add -p
est très raisonnable et beaucoup plus généralement applicable dans un tel cas. La réponse manquait juste de quelques détails. En supposant que votre répertoire actuel est le répertoire que vous souhaitez créer le patch partageable, vous pouvez faire quelque chose comme ceci:Extraire la version vierge de subversion vers un répertoire différent (choisissez un nom de répertoire qui n'existe pas, ici en utilisant le sous-répertoire
TMP/
).En utilisant cette extraction svn vierge comme base, lancez un référentiel git, en ignorant les répertoires .svn; tout valider dans svn head vers votre dépôt git temporaire
Copiez les métadonnées du référentiel git nouvellement préparées dans votre répertoire de travail d'origine; comme le répertoire de vérification de subversion vierge n'est pas nécessaire, vous pouvez vous en débarrasser. Votre répertoire de travail est maintenant à la fois le dépôt git et subversion:
Vous pouvez maintenant utiliser puissant et pratique
git add -p
pour choisir de manière interactive exactement ce que vous souhaitez partager et les valider dans votre référentiel git. Si vous devez ajouter des fichiers au commit, faites-le égalementgit add <file-to-add>
avantgit commit
À l'aide de la validation, préparez un correctif que vous souhaitez partager. À cette fin, vous pouvez également utiliser
git diff HEAD^..HEAD
, ougit format-patch
(ce dernier peut être utilisé pour préparer directement les e-mails à envoyer contenant le ou les plusieurs correctifs):Pour vous débarrasser des métadonnées git, faites-le
rm -rf .git/
. Si vous prévoyez de continuer le piratage avec le répertoire de travail d'origine, vous pouvez continuer à utilisergit
pour gérer vos modifications locales. Dans ce cas, vous bénéficierez probablement de l'investissement pour apprendre à utilisergit svn
.Remarque: Si vous êtes familier avec
git
cela, c'est une chose assez banale à improviser. Sinon, cela semble peut-être un peu désordonné. Vous pouvez généraliser l'approche en écrivant un script à partir de ces étapes pour implémenter un "commit interactif" ou une "création de patch interactif" pour svn qui pourrait être utilisé sans aucune compréhension de git.la source
Vous pourriez utiliser
Lors de la publication de votre diff, n'oubliez pas d'indiquer la révision par rapport à laquelle vous différez.
Comme d'autres l'ont répondu, vous pouvez également l'utiliser
svn revert
avec précaution. Cela dépend si vous souhaitez conserver vos modifications locales pour votre futur travail ou non ...la source
revert
mes changements. J'utiliserais donc votre chemin à l'avenir.Accédez à la racine de ce référentiel et exécutez la commande suivante
la source
svn revert -R .
pourrait être plus courtVous pouvez utiliser la commande commit sur le fichier que vous souhaitez placer et utiliser la commande svn revert pour ignorer les modifications locales restantes
la source