convertir le référentiel git existant en projet sfdx

Sep 13 2020

J'ai un référentiel git existant avec des métadonnées Salesforce que j'utilise depuis quelques années. Ce n'est pas un projet sfdx, c'est juste ce qui est renvoyé lors de l'utilisation de l'API de métadonnées. J'aimerais le convertir en projet sfdx, mais la seule chose que je sache, c'est que lors de la création d'un nouveau projet sfdx, il doit créer un tout nouveau dossier. Je ne veux pas de ça parce que je vais perdre mon historique de commit.

Quelles sont mes options? Je vois à partir de cette question qu'ils viennent de créer un tout nouveau repo, mais cela ne semble pas idéal.

Réponses

1 MohithShrivastava Sep 13 2020 at 07:18

Vous devez créer des fichiers pour transformer un répertoire en projet SFDX, en particulier sfdx-project.json. Le moyen le plus simple de le faire est d'aller dans le dossier parent de votre racine Git et de saisir la commande sfdx force:project:create -n directoryName. Cela crée un certain nombre de fichiers à partir d'un modèle qui sera utilisé pour configurer le projet. Après cela, vous devez ensuite convertir votre dossier source en suivant les étapes ci-dessous.

Cela ressemble à ceci:

computer-name MINGW64 ~/workspace/my-git-project (master)
$ cd .. computer-name MINGW64 ~/workspace $ sfdx force:project:create -n my-git-project
target dir = C:\Users\my-name\workspace
   create my-git-project\config\project-scratch-def.json
   create my-git-project\README.md
   create my-git-project\sfdx-project.json
   create my-git-project\.vscode\extensions.json
   create my-git-project\.vscode\launch.json
   create my-git-project\.vscode\settings.json
   create my-git-project\force-app\main\default\lwc\.eslintrc.json
   create my-git-project\force-app\main\default\aura\.eslintrc.json
   create my-git-project\scripts\soql\account.soql
   create my-git-project\scripts\apex\hello.apex
   create my-git-project\.eslintignore
   create my-git-project\.forceignore
   create my-git-project\.gitignore
   create my-git-project\.prettierignore
   create my-git-project\.prettierrc
   create my-git-project\package.json

Vous pouvez également voir «conflit» et «force»; cela signifie que les fichiers ont été écrasés. Vous pouvez git checkoutannuler ces modifications par la suite.


Git est efficace pour détecter les changements de nom de fichier. Cependant, il a une limite intégrée sur un certain nombre de fichiers qu'il peut gérer à la fois.

Par conséquent, lorsque vous convertissez votre projet au format sfdx, les chances de perdre l'historique sont élevées car le nombre de fichiers renommés dans ce processus peut être supérieur à la limite de git.

Vous pouvez augmenter cette limite par une simple configuration comme ci-dessous

git config merge.renameLimit 999999

Voici ce dont vous aurez besoin pour préserver l'histoire

git config merge.renameLimit 999999
sfdx force:mdapi:convert -r src -d tmp // This converts what is in src to a DX source format and moves to tmp folder
rm -rf src // This removes src folder
mv tmp src // This moves tmp folder items to the src folder
git add -A
git commit -m "Converted from metadata to source format"
git config --unset merge.renameLimit # Return the git config option to the default