From f7a261f70f907a987934826013d146e09d606bde Mon Sep 17 00:00:00 2001
From: LE DURAND Matteo <matteo.le-durand@developpement-durable.gouv.fr>
Date: Fri, 7 Mar 2025 15:19:08 +0100
Subject: [PATCH] =?UTF-8?q?certain=20projet=20on=20=C3=A9t=C3=A9=20renomme?=
 =?UTF-8?q?=20et=20dans=20certain=20evenement=20git=20il=20garde=20l'ancie?=
 =?UTF-8?q?n=20donc=20si=20il=20ne=20trouve=20pas=20le=20projet=20il=20tes?=
 =?UTF-8?q?t=20avec=20le=20nom=20d'origine?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 dev/gitlab_forge.R | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/dev/gitlab_forge.R b/dev/gitlab_forge.R
index ff2f641..3ac686a 100644
--- a/dev/gitlab_forge.R
+++ b/dev/gitlab_forge.R
@@ -286,14 +286,24 @@ all_data_forge <- all_data_forge %>%
   mutate(origine ="Gitlab_Forge")
 all_data_forge <- left_join(all_data_forge, projects_topics, by = c("project_name" = "id"))
 
-#data.frame avec les groupes et le nom pour left join -----
+#data.frame avec les groupes et le nom pour left join-----
 response_df <- data.frame(
   name = response$name,
+  name2 = response$path, #name2 car si le projet à changé de nom alors la jointure ne se fait plus par le nom mais par le passage d'origine ce qui corrige grandement le manque d'information
   groupe = response$namespace$path
 )
 # Joindre les deux jeux de données
 all_data_forge <- all_data_forge %>%
-  left_join(response_df, by = c("project_name" = "name"))
-
-# sauvegarde du jeu de donnée -----
+  left_join(response_df, by = c("project_name" = "name")) # Faire un premier left_join() sur la colonne name
+all_data_forge <- all_data_forge %>% # Compléter les lignes non appariées avec un second left_join() sur la colonne name2
+  left_join(
+    response_df %>%
+      select(name2, groupe),  # On ne conserve que les colonnes utiles
+    by = c("project_name" = "name2"),
+    na_matches = "never" # Empêche l'association des NA
+  ) %>%
+  mutate(groupe = coalesce(groupe.x, groupe.y)) %>%  # Priorité au 1er join
+  select(-groupe.x, -groupe.y)  # Nettoyage des colonnes temporaires
+
+# sauvegarde du jeu de donnée-----
 save(all_data_forge, file = "gitlab_forge.RData")
-- 
GitLab