web-dev-qa-db-fra.com

Comment utiliser Git-filtre-repo pour fusionner un représentant en tant que sous-répertoire dans un autre

En essayant d'utiliser git filter-branch Pour fusionner des repos en utilisant ceci GIST . Ajout de l'extrait pertinent en question:

git filter-branch -f --Prune-empty --tree-filter '
        mkdir -p "${REPO_NAME}_tmp"
        git ls-tree --name-only $GIT_COMMIT | xargs -I{} mv {} "${REPO_NAME}_tmp"
        mv "${REPO_NAME}_tmp" "$REPO_NAME"
    '

J'ai eu un avertissement de GIT indiquant ce qui suit:

WARNING: git-filter-branch has a glut of gotchas generating mangled history
     rewrites.  Hit Ctrl-C before proceeding to abort, then use an
     alternative filtering tool such as 'git filter-repo'
     (https://github.com/newren/git-filter-repo/) instead.  See the
     filter-branch manual page for more details; to squelch this warning,
     set FILTER_BRANCH_SQUELCH_WARNING=1.

Donc, j'ai regardé git filter-repo, le description indique ce qui suit:

restructuration de la disposition du fichier (telle que déplacer tous les fichiers dans un sous-répertoire en vue de la fusion avec un autre repo, ...

Cela a montré que cette question peut être résolue avec git filter-repo, mais même après avoir vérifié la documentation et donné exemples Je n'ai pas pu trouver un moyen de réaliser cela. Quelqu'un peut-il m'aider s'il vous plaît avec la même chose.

9
Aaghaaz

Cela ressemble à un chemin de réponses, dans le cadre des filtres à base de chemin :

cd  $REPO_DIR_TMP
git filter-repo  --path-rename /:${REPO_NAME}_tmp/

Cela réécrireait l'histoire du deuxième représentant dans un sous-dossier (dans ce second régo)

Ensuite, vous pouvez l'ajouter sous la forme d'une télécommande du premier repo, de chercher et de fusionner, comme dans votre gitt.

1
VonC