Travail autour pour ne pas “git svn clone” (nécessitant une histoire complète)

Je veux convertir un dépôt Subversion sous-répertoire (notée par module ici) dans un dépôt git avec un historique complet. Il y a beaucoup de svn copy opérations (Subversion appeler des branches) dans l'histoire de mon dépôt Subversion. La politique de diffusion a été que, après chaque sortie, ou d'autres branches créées, l'ancienne URL est inutilisé et la nouvelle URL remplace l'ancien contenant le travail.

De façon optimale, par mes lectures, il semble que cela devrait faire l'affaire:

$ git svn clone --username=mysvnusername --authors-file=authors.txt \
    --follow-parent \
    http://svnserver/svn/src/branches/x/y/apps/module module

(où branches/x/y/ représente la nouvelle branche). Mais j'ai une erreur qui ressemble à quelque chose comme ceci:

W: Ignoring error from SVN, path probably does not exist: (160013): Filesystem has no item: '/svn/src/!svn/bc/100/branches/x/y/apps/module' path not found
W: Do not be alarmed at the above message git-svn is just searching aggressively for old history.

(Mise à jour: l'Ajout de l'option --no-minimize-url à la ci-dessus ne permet pas de supprimer le message d'erreur.)

Le répertoire module créé et peuplé, mais la Subversion de l'histoire du passé le plus récent svn copy s'engager n'est pas importé (le dépôt git créée finit par avoir seulement deux commits lorsque je m'attendais à des centaines).

La question est de savoir comment exporter l'intégralité de la Subversion de l'histoire en présence de cette situation?

Cause Possible

  1. À la recherche pour le message d'erreur, j'ai trouvé ceci: git-svn anonyme caisse échoue avec -s
    qui était liée à cette Subversion question: http://subversion.tigris.org/issues/show_bug.cgi?id=3242

    Ce que je comprends par ma lecture, quelque chose dans la Subversion 1.5 changé sur la façon dont le client accède au référentiel. Avec les nouveaux Subversion, si il n'y a pas d'accès en lecture à un super répertoire du chemin d'accès d'URL (c'est vrai pour moi, svn ls http://svnserver/svn échoue avec 403 Forbidden), alors nous ne parvenons pas avec certains des opérations de Subversion.

  2. Jeff Fairley dans sa réponse souligne que les espaces de Subversion URL peut également provoquer ce message d'erreur (confirmation par l'utilisateur, Owen). Jeter un oeil à sa solution pour voir comment il a résolu le cas si votre git svn clone est un échec pour les mêmes resson.

  3. Dejay Clayton dans sa réponse révèle que si la plus profonde de la sous-répertoire de composants de direction et de tag svn url sont également appelés (par exemple .../tags/release/1.0.0 et .../branches/release-candidates/1.0.0) alors que cette erreur a pu se produire.

  • Je ne peux pas parler pour les fonctionnalités, mais je peux pour l'avertissement. Vous pouvez ignorer les "Ignorant" erreur sur les bits. Il est sans rapport avec subversion.tigris.org problème est lié. Si quoi que ce soit, basée sur la lecture des git-svn source, il faut jeter un supplément d'erreur pour le tigre cas.
  • Il me semble que l'alerte est liée au fait que le passé le plus récent svn copy je ne vais pas apprendre l'histoire importés. Le svn copy (changement d'URL ou de la création de la nouvelle branche) sont importés comme l'ajout de tous les fichiers jusqu'à présent créé. D'où mon dépôt git contient seulement deux commits quand je m'attends à des centaines.
  • Est-ce un dépôt public? J'ai juré, j'ai lu une question récemment où un apache projet a été de rejeter git svn clones avec le !svn chemin de la syntaxe simplement parce que les administrateurs du projet ne voulais pas git-svn de prendre leurs pensions de bande passante pour une demi-journée. Pour la vie de moi je ne trouve pas la question. C'était un public projet de la fondation Apache, vous l'esprit.
  • Non, c'est le mal de la société repository privé! 🙂 Je n'ai pas accès en lecture à faire svn ls http://svnserver/svn - tous les autres répertoires d'accord. Il n'y a pas de blocage délibéré de git svn. (Comme pour le dépôt Open Source, il semble qu'il aurait donné de meilleurs résultats et ont été un meilleur service à la juste organiser la mise en miroir par les responsables... 😉
  • Je soupçonne que vous avez raison au sujet de l'accès en lecture problème; je viens de dire que l'erreur est erroné (à tout le moins, si il est jeté pour votre cas d'utilisation, il devrait être plus clair sur la cause du problème). Vous pouvez essayer le git liste pour cette.
  • Yup, et nous devrions noter que je n'ai aucun problème à faire svn log -v http://svnserver/svn/src/branches/x/y/apps/module et de voir le passé de l'histoire de la svn copy barrière. Il devrait y avoir une façon de contourner ce possible pour git svn si les autorisations d'accès en lecture sont le problème ici, comme il me semble.
  • Je pense que si votre mise à jour est une solution, vous devriez avoir posté une réponse séparément, de sorte que cette question pourrait être marqué comme résolu.
  • Je pense que vous avez raison. Faute de meilleures façons de le faire, j'ai déplacé mon mauvais goût solution de la question à un organisme indépendant de réponse, et accepté que la solution (en attendant une meilleure façon de le faire).
  • Voir ma réponse ci-dessous pour savoir comment ce problème peut également se produire si vous avez le même nom de sous-répertoires dans les balises ou les branches.

InformationsquelleAutor FooF | 2012-08-28