La revedere R-Forge, salut Codeberg | R-bloggeri

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

(Acest articol a fost publicat pentru prima dată pe Achim Zeileisși cu amabilitate a contribuit la R-bloggeri). (Puteți raporta problema legată de conținutul acestei pagini aici)


Doriți să vă distribuiți conținutul pe R-bloggeri? dați clic aici dacă aveți un blog, sau aici dacă nu aveți.

După 20 de ani de serviciu, platforma de găzduire a pachetelor R-Forge se va retrage în curând. Codeberg este o alternativă modernă care împărtășește multe dintre ideile și valorile pe care a fost construit R-Forge. Este oferit un tutorial pentru trecerea la Codeberg (sau la alte platforme bazate pe Git).

Îți spui la revedere

R-Forge oferă un depozit Subversion (SVN) pentru dezvoltarea în colaborare a pachetelor R împreună cu diverse alte servicii care erau de ultimă generație la acea vreme: construirea și verificarea zilnică a pachetelor, forumuri, liste de corespondență, instrumente de urmărire a erorilor, pagini web. O scurtă introducere a fost publicată în numărul inaugural al The R Journal: Theußl & Zeileis (2009). „Dezvoltare software în colaborare folosind R-Forge.” Jurnalul R, 1(1):9-14. doi:10.32614/RJ-2009-007

Deoarece sistemul FusionForge nu mai este întreținut, R-Forge va fi retras în următoarele luni, trecând la un site numai pentru citire. Oricum, sistemul era oarecum învechit: site-ul are o anumită atmosferă „00s” (vezi captura de ecran a paginii mele de profil de mai jos) și îi lipsesc servicii care au devenit standard în ultimele două decenii, cum ar fi probleme, solicitări de extragere și integrare continuă.

Captură de ecran a paginii de utilizator a lui Achim Zeileis pe R-Forge

salut

Codeberg este un efort non-profit, condus de comunitate, care oferă servicii pentru proiecte gratuite și open-source, cum ar fi găzduirea Git (folosind Forgejo), pagini, integrare continuă etc. Este condus de organizația non-profit Codeberg eV cu sediul în Berlin, Germania, la care contribuatorii pot (dar nu trebuie) să devină membri.
(M-am alăturat vara aceasta.)

Astfel, Codeberg împărtășește multe dintre ideile și valorile pe care R-Forge a fost construit, dar oferă instrumente open-source de ultimă generație pentru dezvoltarea în colaborare a pachetelor R (și nu numai). Pentru o primă impresie despre aspectul și senzația, vedeți captura de ecran a paginii mele de profil de mai jos.

Captură de ecran a paginii de utilizator a lui Achim Zeileis pe CodebergCaptură de ecran a paginii de utilizator a lui Achim Zeileis pe Codeberg

Eu zic du-te du-te

Pentru trecerea de la R-Forge la Codeberg – sau o altă platformă de găzduire a codurilor bazată pe Git – Reto Stauffer a scris un ghid pas cu pas. Cei mai importanți pași sunt, de asemenea, enumerați mai jos.

1. Checkout SVN de la R-Forge

Punctul de plecare pentru tranziție este depozitul SVN de la R-Forge pe care probabil l-ați verificat deja. Pentru ilustrare, folosim c403 Pachetul R care este unul dintre pachetele conținute în proiectul de examene pe R-Forge.

svn checkout svn://R-Forge.R-project.org/svnroot/exams/

2. Lista colaboratorilor R-Forge

Pentru a găsi toate numele de utilizator SVN care au contribuit vreodată la SVN pe depozitul R-Forge (în acest exemplu, la folderul exams/pkg/c403) comanda svn log -q poate fi folosit. Folosind următoarea comandă shell, se poate crea un fișier text cu nume unice. Rețineți că exams/pkg/c403 trebuie înlocuit pentru alte proiecte și numele fișierului de ieșire poate fi și ajustat:

(cd exams/pkg/c403 && svn log -q | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2 }' | sort | uniq) > 
  authors_c403.txt

Aceasta creează fișierul text authors_c403.txt care va arata cam asa:

  azeileis
  retos

Acest fișier trebuie modificat prin adăugarea numelor complete și adreselor de e-mail ale colaboratorilor.
Important: Spațiile de început trebuie eliminate în fiecare linie pentru ca comenzile ulterioare să funcționeze.

azeileis = Achim Zeileis <(email protected)>
retos = Reto Stauffer <(email protected)>

Cu condiția ca paginile de profil de pe R-Forge să fie actualizate pentru utilizatori, este, de asemenea, posibil să răzuiți aceste informații, consultați pasul opțional 2*. de mai jos.

3. Clonează o versiune Git a SVN

Folosind git-svn o versiune Git a SVN poate fi creată cu ușurință. Pentru acest pas este crucial ca toți utilizatorii să fie listați în fișierul autori creat la pasul anterior, în caz contrar git-svn va eșua.

git svn clone svn://R-Forge.R-project.org/svnroot/exams/pkg/c403 
    --authors-file=authors_c403.txt --no-metadata 
    git-c403

Din nou, ajustați adresa URL a SVN-ului, numele fișierului autorilor și numele depozitului git (git-c403) după cum este necesar.

4. Opțional: Filtrați fișierele din depozitul Git

Acest pas nu este necesar pentru c403 exemplu, dar este deosebit de util atunci când migrați un depozit R-Forge complet (mai degrabă decât doar un pkg subdosar). În acest caz, ar putea fi util să filtrați anumite fișiere sau directoare, cum ar fi inițiala README fișier creat automat de R-Forge sau www subdirector (de obicei care conține doar fișierul PHP original sau o pagină web generată automat de la pkgdown sau altdoc).

Astfel de fișiere pot fi filtrate, adică șterse complet din istoricul depozitului, folosind git-filter-repo:

git-filter-repo --force --path 'README' --invert-paths
git-filter-repo --force --path 'www' --invert-paths

5. Importați depozitul Git pe Codeberg

Mai întâi, creați un nou proiect pe Codeberg, de exemplu, https://codeberg.org/zeileis/c403. Proiectul ar trebui să fie complet gol, fără niciun comit inițial.

Apoi, tot ce rămâne de făcut este să spuneți depozitului Git unde este noua sa casă (reglați din nou toate numele în mod corespunzător):

cd git-c403
git remote add origin ssh://(email protected)/zeileis/c403.git
git push --set-upstream origin main

Tot istoricul va fi disponibil imediat în noul depozit. Dacă autorii au conturi pe Codeberg, profilurile lor vor fi conectate pe baza adreselor de e-mail asociate contului lor Codeberg.

6. Compilări și verificări de pachete prin R-universe

Pentru a construi și a verifica automat versiunile de dezvoltare ale pachetului R pe Codeberg, cea mai convenabilă soluție este utilizarea serviciului R-universe dezvoltat de Jeroen Ooms și furnizat de rOpenSci.

(
    {
        "package": "c403",
        "url": "https://codeberg.org/zeileis/c403"
    }
)

7. Pagini Codeberg

Dacă doriți să adăugați o pagină de proiect pentru pachetul dvs., de exemplu, generată prin altdoc sau pkgdown, atunci poate fi utilizat https://codeberg.page/.

The c403 pachetul nu are încă o pagină, dar pentru un exemplu vezi https://zeileis.codeberg.page/topmodels/ care este generat din pachetul topmodels R folosind altdoc în combinație cu quarto.

Tot ceea ce trebuie făcut pentru a crea pagina manual este să creați o ramură goală pages prin git switch --orphan pagesadăugând fișierele statice ale site-ului și împingându-le în depozit.

Alternativ, este, de asemenea, posibil să utilizați acțiunile Forgejo pentru a face acest lucru automat.

În cele din urmă, informați utilizatorii unde pot fi găsite sursele pachetului, adică actualizați DESCRIPTION (mai ales cel URL şi BugReports câmpuri) și în NEWS. În plus, a README.md ar fi de așteptat într-un proiect în timp ce pe R-Forge, acesta nu a fost adesea folosit (deoarece R-Forge ar fi conștient de DESCRIPTION în schimb). În cele din urmă, se recomandă adăugarea unui link de la vechiul proiect R-Forge la noul proiect Codeberg (eventual și în www pliant). Pentru a vă asigura că niciunul dintre contribuitori nu poate face modificări în vechiul SVN R-Forge, permisiunile de pe R-Forge pot fi comutate la numai citire (de obicei pentru Dezvoltator senior rol).

Adăugare opțională: 2.* Scrape numele autorilor și adresele de e-mail

La pasul 2, după fișierul cu numele autorilor (authors_c403.txt în exemplul de mai sus) a fost creat, se poate încerca să automatizeze adăugarea de nume proprii și adrese de e-mail. Acest lucru este util în special dacă există mai mult decât o mână de utilizatori. Funcționează atunci când paginile utilizatorului R-Forge listează numele proprii și adresele de e-mail (actuale).

Funcția de mai jos poate fi apelată în R ca

rforge_authors("c403")

Mai întâi se citește authors_c403.txt fișier, caută toți utilizatorii de pe R-Forge (folosind pachetul rvest), apoi actualizează fișierul authors_c403.txt dosar în consecință.

rforge_authors <- function(x) {
  txt <- sprintf("authors_%s.txt", x)
  if (file.exists(txt)) {
    a <- readLines(txt)
    a <- gsub(" ", "", a)
  } else {
    stop(sprintf("Please use 'svn log' to set up an '%s' file with all user names", txt))
  }

  for (i in seq_along(a)) {  
    doc <- a(i) |>
      sprintf(fmt = "https://r-forge.r-project.org/users/%s/") |>
      rvest::read_html()
    n <- doc |>
      rvest::html_table() |>
      lapply(as.data.frame) |>
      lapply(subset, subset = X1 == "Real Name:", select = "X2", drop = TRUE) |>
      unlist() |>
      unique()
    if (length(n) < 1L) n <- "FIXME"
    e <- doc |>
      rvest::html_table() |>
      lapply(as.data.frame) |>
      lapply(subset, subset = X1 == "Email Address:", select = "X2", drop = TRUE) |>
      unlist() |>
      unique() |>
      gsub(pattern = " @nospam@ ", replacement = "@", fixed = TRUE)
    if (length(e) < 1L) e <- "FIXME"
    a(i) <- sprintf("%s = %s <%s>", a(i), n, e)
  }
  writeLines(a, txt)
  invisible(a)
}

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.