git-fast-export(1): Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
(Skapade sidan med '```mediawiki {{manpage|section=1|title=git-fast-export}} == NAMN == git-fast-export - Git-dataexportör == SYNOPSIS == '''git fast-export''' [<alternativ>] | '''git fast-import''' == BESKRIVNING == Detta program dumpar de givna revisionerna i ett format som är lämpligt att pipas in i '''git fast-import'''. Du kan använda det som en mänskligt läsbar ersättning för bundle (se git-bundle(1)), eller som ett format som kan redigeras innan det matas till '''git...')
 
 
(3 mellanliggande sidversioner av samma användare visas inte)
Rad 1: Rad 1:
```mediawiki
```mediawiki
{{manpage|section=1|title=git-fast-export}}


== NAMN ==
== NAMN ==
Rad 20: Rad 19:
* '''--progress'''=<n>
* '''--progress'''=<n>
:: Infoga *progress*-uttryck för varje <n> objekt, som visas av *git
:: Infoga *progress*-uttryck för varje <n> objekt, som visas av *git
  fast-import* under importen.
fast-import* under importen.
* '''--signed-tags'''=(verbatim|warn|warn-strip|strip|abort)
* '''--signed-tags'''=(verbatim|warn|warn-strip|strip|abort)
:: Ange hur signerade taggar ska hanteras. Eftersom alla transformationer
:: Ange hur signerade taggar ska hanteras. Eftersom alla transformationer
  efter exporten kan ändra taggnamnen (vilket också kan hända när
efter exporten kan ändra taggnamnen (vilket också kan hända när
  revisioner exkluderas) kommer signaturerna inte att matcha.
revisioner exkluderas) kommer signaturerna inte att matcha.


  När du ber om att *abort* (vilket är standard) kommer detta program att
När du ber om att *abort* (vilket är standard) kommer detta program att
  avslutas när det stöter på en signerad tagg. Med *strip* kommer taggarna
avslutas när det stöter på en signerad tagg. Med *strip* kommer taggarna
  tyst att göras osignerade, med *warn-strip* kommer de att göras
tyst att göras osignerade, med *warn-strip* kommer de att göras
  osignerade men en varning kommer att visas, med *verbatim* kommer de
osignerade men en varning kommer att visas, med *verbatim* kommer de
  tyst att exporteras och med *warn* kommer de att exporteras, men du
tyst att exporteras och med *warn* kommer de att exporteras, men du
  kommer att se en varning.
kommer att se en varning.
* '''--tag-of-filtered-object'''=(abort|drop|rewrite)
* '''--tag-of-filtered-object'''=(abort|drop|rewrite)
:: Ange hur taggar ska hanteras vars taggade objekt filtreras bort.
:: Ange hur taggar ska hanteras vars taggade objekt filtreras bort.
  Eftersom revisioner och filer som ska exporteras kan begränsas av sökväg
Eftersom revisioner och filer som ska exporteras kan begränsas av sökväg
  kan taggade objekt filtreras bort helt.
kan taggade objekt filtreras bort helt.


  När du ber om att *abort* (vilket är standard) kommer detta program att
När du ber om att *abort* (vilket är standard) kommer detta program att
  avslutas när det stöter på en sådan tagg. Med *drop* kommer den att
avslutas när det stöter på en sådan tagg. Med *drop* kommer den att
  utelämna sådana taggar från utdata. Med *rewrite*, om det taggade
utelämna sådana taggar från utdata. Med *rewrite*, om det taggade
  objektet är en commit, kommer den att skriva om taggen för att tagga en
objektet är en commit, kommer den att skriva om taggen för att tagga en
  förfäderscommit (via föräldraomskrivning; se [[git-rev-list(1)]]).
förfäderscommit (via föräldraomskrivning; se [[git-rev-list(1)]]).
* '''-M''', '''-C'''
* '''-M''', '''-C'''
:: Utför flytt- och/eller kopieringsdetektering, som beskrivs på
:: Utför flytt- och/eller kopieringsdetektering, som beskrivs på
  manualsidan för [[git-diff(1)]], och använd den för att generera
manualsidan för [[git-diff(1)]], och använd den för att generera
  kommandon för omdöpning och kopiering i utdatadumpen.
kommandon för omdöpning och kopiering i utdatadumpen.


  Observera att tidigare versioner av detta kommando inte klagade och
Observera att tidigare versioner av detta kommando inte klagade och
  producerade felaktiga resultat om du angav dessa alternativ.
producerade felaktiga resultat om du angav dessa alternativ.
* '''--export-marks'''=<fil>
* '''--export-marks'''=<fil>
:: Dumpar den interna markeringstabellen till <fil> när den är klar.
:: Dumpar den interna markeringstabellen till <fil> när den är klar.
  Markeringar skrivs en per rad som '''\:markid SHA-1'''. Endast
Markeringar skrivs en per rad som '''\:markid SHA-1'''. Endast
  markeringar för revisioner dumpas; markeringar för blobar ignoreras.
markeringar för revisioner dumpas; markeringar för blobar ignoreras.
  Backend kan använda den här filen för att validera importer efter att de
Backend kan använda den här filen för att validera importer efter att de
  har slutförts, eller för att spara markeringstabellen mellan
har slutförts, eller för att spara markeringstabellen mellan
  inkrementella körningar. Eftersom <fil> endast öppnas och trunkeras vid
inkrementella körningar. Eftersom <fil> endast öppnas och trunkeras vid
  slutförandet kan samma sökväg också säkert anges till --import-marks.
slutförandet kan samma sökväg också säkert anges till --import-marks.
  Filen kommer inte att skrivas om inget nytt objekt har markerats/exporterats.
Filen kommer inte att skrivas om inget nytt objekt har markerats/exporterats.
* '''--import-marks'''=<fil>
* '''--import-marks'''=<fil>
:: Innan någon indata bearbetas, ladda de markeringar som anges i <fil>.
:: Innan någon indata bearbetas, ladda de markeringar som anges i <fil>.
  Indatafilen måste finnas, måste vara läsbar och måste använda samma
Indatafilen måste finnas, måste vara läsbar och måste använda samma
  format som produceras av --export-marks.
format som produceras av --export-marks.
* '''--mark-tags'''
* '''--mark-tags'''
:: Utöver att märka blobar och commits med markerings-ID, märka även
:: Utöver att märka blobar och commits med markerings-ID, märka även
  taggar. Detta är användbart i kombination med '''--export-marks''' och
taggar. Detta är användbart i kombination med '''--export-marks''' och
  '''--import-marks''', och är också användbart (och nödvändigt) för
'''--import-marks''', och är också användbart (och nödvändigt) för
  export av nästade taggar. Det skadar inte andra fall och skulle vara
export av nästade taggar. Det skadar inte andra fall och skulle vara
  standard, men många fast-import-frontend är inte beredda att acceptera
standard, men många fast-import-frontend är inte beredda att acceptera
  taggar med markeringsidentifierare.
taggar med markeringsidentifierare.


  Alla commits (eller taggar) som redan har markerats kommer inte att
Alla commits (eller taggar) som redan har markerats kommer inte att
  exporteras igen. Om backend använder en liknande --import-marks-fil
exporteras igen. Om backend använder en liknande --import-marks-fil
  möjliggör detta inkrementell dubbelriktad export av repositoryt genom
möjliggör detta inkrementell dubbelriktad export av repositoryt genom
  att hålla markeringarna desamma mellan körningarna.
att hålla markeringarna desamma mellan körningarna.
* '''--fake-missing-tagger'''
* '''--fake-missing-tagger'''
:: Vissa gamla repositoryn har taggar utan taggare. Fast-import-protokollet
:: Vissa gamla repositoryn har taggar utan taggare. Fast-import-protokollet
  var ganska strikt med det och tillät inte det. Så skapa en falsk taggare
var ganska strikt med det och tillät inte det. Så skapa en falsk taggare
  för att kunna fast-importera utdata.
för att kunna fast-importera utdata.
* '''--use-done-feature'''
* '''--use-done-feature'''
:: Starta strömmen med en *feature done*-strof och avsluta den med ett
:: Starta strömmen med en *feature done*-strof och avsluta den med ett
  *done*-kommando.
*done*-kommando.
* '''--no-data'''
* '''--no-data'''
:: Hoppa över utdata av blobobjekt och referera istället till blobar via
:: Hoppa över utdata av blobobjekt och referera istället till blobar via
  deras ursprungliga SHA-1-hash. Detta är användbart när du skriver om
deras ursprungliga SHA-1-hash. Detta är användbart när du skriver om
  katalogstrukturen eller historiken för ett repository utan att röra
katalogstrukturen eller historiken för ett repository utan att röra
  innehållet i enskilda filer. Observera att den resulterande strömmen
innehållet i enskilda filer. Observera att den resulterande strömmen
  endast kan användas av ett repository som redan innehåller de
endast kan användas av ett repository som redan innehåller de
  nödvändiga objekten.
nödvändiga objekten.
* '''--full-tree'''
* '''--full-tree'''
:: Detta alternativ kommer att få fast-export att utfärda en
:: Detta alternativ kommer att få fast-export att utfärda en
  "deleteall"-direktiv för varje commit följt av en fullständig lista över
"deleteall"-direktiv för varje commit följt av en fullständig lista över
  alla filer i commiten (i motsats till att bara lista de filer som skiljer
alla filer i commiten (i motsats till att bara lista de filer som skiljer
  sig från commitens första förälder).
sig från commitens första förälder).
* '''--anonymize'''
* '''--anonymize'''
:: Anonymisera innehållet i repositoryt samtidigt som formen på historiken
:: Anonymisera innehållet i repositoryt samtidigt som formen på historiken
  och det lagrade trädet bibehålls. Se avsnittet om '''ANONYMISERING'''
och det lagrade trädet bibehålls. Se avsnittet om '''ANONYMISERING'''
  nedan.
nedan.
* '''--anonymize-map'''=<från>[:<till>]
* '''--anonymize-map'''=<från>[:<till>]
:: Konvertera token <från> till <till> i den anonymiserade utdata. Om
:: Konvertera token <från> till <till> i den anonymiserade utdata. Om
Rad 138: Rad 137:
== EXEMPEL ==
== EXEMPEL ==
```
```
      $ git fast-export --all | (cd /tomt/repository && git fast-import)
$ git fast-export --all | (cd /tomt/repository && git fast-import)
```
```
Detta exporterar hela repositoryt och importerar det till det befintliga
Detta exporterar hela repositoryt och importerar det till det befintliga
Rad 144: Rad 143:
det vara en en-till-en-spegling.
det vara en en-till-en-spegling.
```
```
      $ git fast-export master~5..master |
$ git fast-export master~5..master |
            sed "s|refs/heads/master|refs/heads/other|" |
sed "s|refs/heads/master|refs/heads/other|" |
            git fast-import
git fast-import
```
```
Detta skapar en ny gren som heter *other* från *master~5..master* (dvs. om
Detta skapar en ny gren som heter *other* från *master~5..master* (dvs. om
Rad 156: Rad 155:
== ANONYMISERING ==
== ANONYMISERING ==
Om alternativet '''--anonymize''' anges kommer git att försöka ta bort all
Om alternativet '''--anonymize''' anges kommer git att försöka ta bort all
identifierande information från repositoryt samtidigt som tillräckligt av
identifierande information från repositoryt samtidigt som tillräckligt av
det ursprungliga trädets och historikens mönster bibehålls för att
det ursprungliga trädets och historikens mönster bibehålls för att
reproducera vissa buggar. Målet är att en git-bugg som hittas i ett privat
reproducera vissa buggar. Målet är att en git-bugg som hittas i ett privat
repository ska finnas kvar i det anonymiserade repositoryt, och det senare
repository ska finnas kvar i det anonymiserade repositoryt, och det senare
Rad 163: Rad 165:


Med detta alternativ kommer git att ersätta alla refnamn, sökvägar,
Med detta alternativ kommer git att ersätta alla refnamn, sökvägar,
blobbinnehåll, commit- och taggmeddelanden, namn och e-postadresser i
 
blobbinnehåll, commit- och taggmeddelanden, namn och e-postadresser  
 
utdata med anonymiserad data. Två instanser av samma sträng kommer att
utdata med anonymiserad data. Två instanser av samma sträng kommer att
ersättas likvärdigt (t.ex. två commits med samma författare kommer att ha
ersättas likvärdigt (t.ex. två commits med samma författare kommer att ha
samma anonymiserade författare i utdata, men kommer inte att likna den
samma anonymiserade författare i utdata, men kommer inte att likna den
ursprungliga författarsträngen). Förhållandet mellan commits, grenar och
ursprungliga författarsträngen). Förhållandet mellan commits, grenar och
taggar bibehålls, liksom commit-tidsstämplarna (men commitmeddelandena och
taggar bibehålls, liksom commit-tidsstämplarna (men commitmeddelandena och
refnamnen liknar inte originalen). Trädets relativa sammansättning
refnamnen liknar inte originalen). Trädets relativa sammansättning
bibehålls (t.ex. om du har ett rotträd med 10 filer och 3 träd, så kommer
bibehålls (t.ex. om du har ett rotträd med 10 filer och 3 träd, så kommer
utdata också att ha det), men deras namn och innehållet i filerna kommer
utdata också att ha det), men deras namn och innehållet i filerna kommer
att ersättas.
att ersättas.


Om du tror att du har hittat en git-bugg kan du börja med att exportera en
Om du tror att du har hittat en git-bugg kan du börja med att exportera en
anonymiserad ström av hela repositoryt:
anonymiserad ström av hela repositoryt:
```
```
Rad 180: Rad 193:
```
```
Bekräfta sedan att buggen kvarstår i ett repository som skapats från den
Bekräfta sedan att buggen kvarstår i ett repository som skapats från den
strömmen (många buggar kommer inte att göra det, eftersom de verkligen
strömmen (många buggar kommer inte att göra det, eftersom de verkligen
beror på det exakta repositoryinnehållet):
beror på det exakta repositoryinnehållet):
```
```
Rad 188: Rad 203:
       $ ... testa din bugg ...
       $ ... testa din bugg ...
```
```
Om det anonymiserade repositoryt visar buggen kan det vara värt att dela
Om det anonymiserade repositoryt visar buggen kan det vara värt att dela
'''anon-stream''' tillsammans med en vanlig felrapport. Observera att den
'''anon-stream''' tillsammans med en vanlig felrapport. Observera att den
anonymiserade strömmen komprimeras mycket bra, så att zippa den rekommenderas.
anonymiserade strömmen komprimeras mycket bra, så att zippa den rekommenderas.
Om du vill undersöka strömmen för att se att den inte innehåller någon
Om du vill undersöka strömmen för att se att den inte innehåller någon
privat data kan du granska den direkt innan du skickar. Du kanske också
privat data kan du granska den direkt innan du skickar. Du kanske också
vill prova:
vill prova:
Rad 197: Rad 216:
       $ perl -pe 's/\d+/X/g' < anon-stream | sort -u | less
       $ perl -pe 's/\d+/X/g' < anon-stream | sort -u | less
```
```
vilket visar alla unika rader (med siffror konverterade till "X" för att
vilket visar alla unika rader (med siffror konverterade till "X" för att
slå ihop "Användare 0", "Användare 1" osv. till "Användare X"). Detta ger
slå ihop "Användare 0", "Användare 1" osv. till "Användare X"). Detta ger
en mycket mindre utdata, och det är vanligtvis lätt att snabbt bekräfta att
en mycket mindre utdata, och det är vanligtvis lätt att snabbt bekräfta att
det inte finns någon privat data i strömmen.
det inte finns någon privat data i strömmen.


Att reproducera vissa buggar kan kräva referenser till specifika commits
Att reproducera vissa buggar kan kräva referenser till specifika commits
eller sökvägar, vilket blir utmanande efter att refnamn och sökvägar har
eller sökvägar, vilket blir utmanande efter att refnamn och sökvägar har
anonymiserats. Du kan be om att en viss token ska lämnas oförändrad eller
anonymiserats. Du kan be om att en viss token ska lämnas oförändrad eller
mappas till ett nytt värde. Om du till exempel har en bugg som
mappas till ett nytt värde. Om du till exempel har en bugg som
reproduceras med '''git rev-list sensitive -- secret.c''' kan du köra:
reproduceras med '''git rev-list sensitive -- secret.c''' kan du köra:
```
```
       $ git fast-export --anonymize --all \
       $ git fast-export --anonymize --all \
Rad 214: Rad 240:
```
```
Efter att ha importerat strömmen kan du sedan köra '''git rev-list foo --
Efter att ha importerat strömmen kan du sedan köra '''git rev-list foo --
bar.c''' i det anonymiserade repositoryt.


Observera att sökvägar och refnamn delas upp i tokens vid snedstreck.
bar.c''' i det anonymiserade repositoryt.'''
 
Observera att sökvägar och refnamn delas upp i tokens vid snedstreck
 
Kommandot ovan skulle anonymisera '''subdir/secret.c''' som något i stil
Kommandot ovan skulle anonymisera '''subdir/secret.c''' som något i stil
med '''path123/bar.c'''; du kan sedan söka efter '''bar.c''' i det
med '''path123/bar.c'''; du kan sedan söka efter '''bar.c''' i det
anonymiserade repositoryt för att bestämma det slutliga sökvägsnamnet.
anonymiserade repositoryt för att bestämma det slutliga sökvägsnamnet.


För att göra det enklare att referera till det slutliga sökvägsnamnet kan
För att göra det enklare att referera till det slutliga sökvägsnamnet kan
du mappa varje sökvägskomponent; så om du också anonymiserar '''subdir'''
du mappa varje sökvägskomponent; så om du också anonymiserar '''subdir'''
till '''publicdir''' skulle det slutliga sökvägsnamnet vara
till '''publicdir''' skulle det slutliga sökvägsnamnet vara
'''publicdir/bar.c'''.
'''publicdir/bar.c'''.


== BEGRÄNSNINGAR ==
== BEGRÄNSNINGAR ==
Eftersom *git fast-import* inte kan tagga träd kommer du inte att kunna
Eftersom *git fast-import* inte kan tagga träd kommer du inte att kunna
exportera linux.git-repositoryt fullständigt, eftersom det innehåller en
exportera linux.git-repositoryt fullständigt, eftersom det innehåller en
tagg som refererar till ett träd istället för en commit.
tagg som refererar till ett träd istället för en commit.


Rad 240: Rad 275:
Den här sidan är en del av projektet ''git'' (Git distribuerat
Den här sidan är en del av projektet ''git'' (Git distribuerat
versionskontrollsystem). Information om projektet finns på
versionskontrollsystem). Information om projektet finns på
<⟨http://git-scm.com/⟩>. Om du har en felrapport för den här
<⟨http://git-scm.com/⟩>. Om du har en felrapport för den här
manualsidan, se ⟨<http://git-scm.com/community⟩. Den här sidan hämtades
manualsidan, se ⟨<http://git-scm.com/community⟩. Den här sidan hämtades
från projektets uppströms Git-arkiv <⟨https://github.com/git/git.git⟩> den
från projektets uppströms Git-arkiv <⟨https://github.com/git/git.git⟩> den
2025-02-02. (Vid den tidpunkten var datumet för den senast hittade
2025-02-02. (Vid den tidpunkten var datumet för den senast hittade
committen i arkivet 2025-01-31.) Om du upptäcker några renderingsproblem i
committen i arkivet 2025-01-31.) Om du upptäcker några renderingsproblem i

Nuvarande version från 3 maj 2025 kl. 06.51

```mediawiki

NAMN

git-fast-export - Git-dataexportör

SYNOPSIS

git fast-export [<alternativ>] | git fast-import

BESKRIVNING

Detta program dumpar de givna revisionerna i ett format som är lämpligt att pipas in i git fast-import.

Du kan använda det som en mänskligt läsbar ersättning för bundle (se git-bundle(1)), eller som ett format som kan redigeras innan det matas till git fast-import för att göra om historik (en förmåga som används av verktyg som git filter-repo).

ALTERNATIV

  • --progress=<n>
Infoga *progress*-uttryck för varje <n> objekt, som visas av *git

fast-import* under importen.

  • --signed-tags=(verbatim|warn|warn-strip|strip|abort)
Ange hur signerade taggar ska hanteras. Eftersom alla transformationer

efter exporten kan ändra taggnamnen (vilket också kan hända när revisioner exkluderas) kommer signaturerna inte att matcha.

När du ber om att *abort* (vilket är standard) kommer detta program att avslutas när det stöter på en signerad tagg. Med *strip* kommer taggarna tyst att göras osignerade, med *warn-strip* kommer de att göras osignerade men en varning kommer att visas, med *verbatim* kommer de tyst att exporteras och med *warn* kommer de att exporteras, men du kommer att se en varning.

  • --tag-of-filtered-object=(abort|drop|rewrite)
Ange hur taggar ska hanteras vars taggade objekt filtreras bort.

Eftersom revisioner och filer som ska exporteras kan begränsas av sökväg kan taggade objekt filtreras bort helt.

När du ber om att *abort* (vilket är standard) kommer detta program att avslutas när det stöter på en sådan tagg. Med *drop* kommer den att utelämna sådana taggar från utdata. Med *rewrite*, om det taggade objektet är en commit, kommer den att skriva om taggen för att tagga en förfäderscommit (via föräldraomskrivning; se git-rev-list(1)).

  • -M, -C
Utför flytt- och/eller kopieringsdetektering, som beskrivs på

manualsidan för git-diff(1), och använd den för att generera kommandon för omdöpning och kopiering i utdatadumpen.

Observera att tidigare versioner av detta kommando inte klagade och producerade felaktiga resultat om du angav dessa alternativ.

  • --export-marks=<fil>
Dumpar den interna markeringstabellen till <fil> när den är klar.

Markeringar skrivs en per rad som \:markid SHA-1. Endast markeringar för revisioner dumpas; markeringar för blobar ignoreras. Backend kan använda den här filen för att validera importer efter att de har slutförts, eller för att spara markeringstabellen mellan inkrementella körningar. Eftersom <fil> endast öppnas och trunkeras vid slutförandet kan samma sökväg också säkert anges till --import-marks. Filen kommer inte att skrivas om inget nytt objekt har markerats/exporterats.

  • --import-marks=<fil>
Innan någon indata bearbetas, ladda de markeringar som anges i <fil>.

Indatafilen måste finnas, måste vara läsbar och måste använda samma format som produceras av --export-marks.

  • --mark-tags
Utöver att märka blobar och commits med markerings-ID, märka även

taggar. Detta är användbart i kombination med --export-marks och --import-marks, och är också användbart (och nödvändigt) för export av nästade taggar. Det skadar inte andra fall och skulle vara standard, men många fast-import-frontend är inte beredda att acceptera taggar med markeringsidentifierare.

Alla commits (eller taggar) som redan har markerats kommer inte att exporteras igen. Om backend använder en liknande --import-marks-fil möjliggör detta inkrementell dubbelriktad export av repositoryt genom att hålla markeringarna desamma mellan körningarna.

  • --fake-missing-tagger
Vissa gamla repositoryn har taggar utan taggare. Fast-import-protokollet

var ganska strikt med det och tillät inte det. Så skapa en falsk taggare för att kunna fast-importera utdata.

  • --use-done-feature
Starta strömmen med en *feature done*-strof och avsluta den med ett
  • done*-kommando.
  • --no-data
Hoppa över utdata av blobobjekt och referera istället till blobar via

deras ursprungliga SHA-1-hash. Detta är användbart när du skriver om katalogstrukturen eller historiken för ett repository utan att röra innehållet i enskilda filer. Observera att den resulterande strömmen endast kan användas av ett repository som redan innehåller de nödvändiga objekten.

  • --full-tree
Detta alternativ kommer att få fast-export att utfärda en

"deleteall"-direktiv för varje commit följt av en fullständig lista över alla filer i commiten (i motsats till att bara lista de filer som skiljer sig från commitens första förälder).

  • --anonymize
Anonymisera innehållet i repositoryt samtidigt som formen på historiken

och det lagrade trädet bibehålls. Se avsnittet om ANONYMISERING nedan.

  • --anonymize-map=<från>[:<till>]
Konvertera token <från> till <till> i den anonymiserade utdata. Om
  <till> utelämnas, mappa <från> till sig själv (dvs. anonymisera det
  inte). Se avsnittet om ANONYMISERING nedan.
  • --reference-excluded-parents
Som standard kommer körning av ett kommando som git fast-export
  master~5..master inte att inkludera commit master~5 och kommer att
  göra att master~4 inte längre har master~5 som förälder (även om både
  den gamla master~4 och den nya master~4 kommer att ha exakt samma
  filer). Använd --reference-excluded-parents för att istället låta
  strömmen referera till commits i det exkluderade historikintervallet med
  deras sha1sum. Observera att den resulterande strömmen endast kan
  användas av ett repository som redan innehåller de nödvändiga
  föräldracommitarna.
  • --show-original-ids
Lägg till ett extra direktiv till utdata för commits och blobar,
  original-oid <SHA1SUM>. Även om sådana direktiv sannolikt kommer
  att ignoreras av importörer som git-fast-import, kan det vara
  användbart för mellanliggande filter (t.ex. för att skriva om
  commitmeddelanden som refererar till äldre commits, eller för att ta
  bort blobar med ID).
  • --reencode=(yes|no|abort)
Ange hur *encoding*-huvudet i commitobjekt ska hanteras. När du ber om
  att *abort* (vilket är standard) kommer detta program att avslutas när
  det stöter på ett sådant commitobjekt. Med *yes* kommer commitmeddelandet
  att omkodas till UTF-8. Med *no* kommer den ursprungliga kodningen att
  behållas.
  • --refspec
Tillämpa den angivna refspecen på varje exporterad ref. Flera kan
  anges.
  • [<git-rev-list-args>...]
En lista med argument, godtagbara för *git rev-parse* och *git
  rev-list*, som anger de specifika objekt och referenser som ska
  exporteras. Till exempel kommer master~10..master att exportera
  den aktuella master-referensen tillsammans med alla objekt som lagts
  till sedan dess tionde förfäderscommit och (om inte alternativet
  --reference-excluded-parents anges) alla filer som är gemensamma för
  master~9 och master~10.

EXEMPEL

``` $ git fast-export --all | (cd /tomt/repository && git fast-import) ``` Detta exporterar hela repositoryt och importerar det till det befintliga tomma repositoryt. Förutom omkodning av commits som inte är i UTF-8, skulle det vara en en-till-en-spegling. ``` $ git fast-export master~5..master | sed "s|refs/heads/master|refs/heads/other|" | git fast-import ``` Detta skapar en ny gren som heter *other* från *master~5..master* (dvs. om

  • master* har linjär historik, kommer den att ta de senaste 5 commitarna).

Observera att detta antar att inget av blobarna och commitmeddelandena som refereras av det revisionsintervallet innehåller strängen

  • refs/heads/master*.

ANONYMISERING

Om alternativet --anonymize anges kommer git att försöka ta bort all

identifierande information från repositoryt samtidigt som tillräckligt av

det ursprungliga trädets och historikens mönster bibehålls för att

reproducera vissa buggar. Målet är att en git-bugg som hittas i ett privat repository ska finnas kvar i det anonymiserade repositoryt, och det senare kan delas med git-utvecklare för att hjälpa till att lösa buggen.

Med detta alternativ kommer git att ersätta alla refnamn, sökvägar,

blobbinnehåll, commit- och taggmeddelanden, namn och e-postadresser

utdata med anonymiserad data. Två instanser av samma sträng kommer att

ersättas likvärdigt (t.ex. två commits med samma författare kommer att ha

samma anonymiserade författare i utdata, men kommer inte att likna den

ursprungliga författarsträngen). Förhållandet mellan commits, grenar och

taggar bibehålls, liksom commit-tidsstämplarna (men commitmeddelandena och

refnamnen liknar inte originalen). Trädets relativa sammansättning

bibehålls (t.ex. om du har ett rotträd med 10 filer och 3 träd, så kommer

utdata också att ha det), men deras namn och innehållet i filerna kommer

att ersättas.

Om du tror att du har hittat en git-bugg kan du börja med att exportera en

anonymiserad ström av hela repositoryt: ```

      $ git fast-export --anonymize --all > anon-stream

``` Bekräfta sedan att buggen kvarstår i ett repository som skapats från den

strömmen (många buggar kommer inte att göra det, eftersom de verkligen

beror på det exakta repositoryinnehållet): ```

      $ git init anon-repo
      $ cd anon-repo
      $ git fast-import < ../anon-stream
      $ ... testa din bugg ...

```

Om det anonymiserade repositoryt visar buggen kan det vara värt att dela

anon-stream tillsammans med en vanlig felrapport. Observera att den anonymiserade strömmen komprimeras mycket bra, så att zippa den rekommenderas.

Om du vill undersöka strömmen för att se att den inte innehåller någon

privat data kan du granska den direkt innan du skickar. Du kanske också vill prova: ```

      $ perl -pe 's/\d+/X/g' < anon-stream | sort -u | less

```

vilket visar alla unika rader (med siffror konverterade till "X" för att

slå ihop "Användare 0", "Användare 1" osv. till "Användare X"). Detta ger

en mycket mindre utdata, och det är vanligtvis lätt att snabbt bekräfta att

det inte finns någon privat data i strömmen.

Att reproducera vissa buggar kan kräva referenser till specifika commits

eller sökvägar, vilket blir utmanande efter att refnamn och sökvägar har

anonymiserats. Du kan be om att en viss token ska lämnas oförändrad eller mappas till ett nytt värde. Om du till exempel har en bugg som reproduceras med git rev-list sensitive -- secret.c kan du köra:

```

      $ git fast-export --anonymize --all \
            --anonymize-map=sensitive:foo \
            --anonymize-map=secret.c:bar.c \
            > stream

``` Efter att ha importerat strömmen kan du sedan köra git rev-list foo --

bar.c i det anonymiserade repositoryt.

Observera att sökvägar och refnamn delas upp i tokens vid snedstreck

Kommandot ovan skulle anonymisera subdir/secret.c som något i stil

med path123/bar.c; du kan sedan söka efter bar.c i det

anonymiserade repositoryt för att bestämma det slutliga sökvägsnamnet.

För att göra det enklare att referera till det slutliga sökvägsnamnet kan

du mappa varje sökvägskomponent; så om du också anonymiserar subdir

till publicdir skulle det slutliga sökvägsnamnet vara

publicdir/bar.c.

BEGRÄNSNINGAR

Eftersom *git fast-import* inte kan tagga träd kommer du inte att kunna

exportera linux.git-repositoryt fullständigt, eftersom det innehåller en

tagg som refererar till ett träd istället för en commit.

SE ÄVEN

git-fast-import(1)

GIT

Del av git(1)-sviten

KOLOFON

Den här sidan är en del av projektet git (Git distribuerat versionskontrollsystem). Information om projektet finns på

<⟨http://git-scm.com/⟩>. Om du har en felrapport för den här

manualsidan, se ⟨<http://git-scm.com/community⟩. Den här sidan hämtades från projektets uppströms Git-arkiv <⟨https://github.com/git/git.git⟩> den

2025-02-02. (Vid den tidpunkten var datumet för den senast hittade committen i arkivet 2025-01-31.) Om du upptäcker några renderingsproblem i den här HTML-versionen av sidan, eller om du tror att det finns en bättre eller mer aktuell källa för sidan, eller om du har korrigeringar eller förbättringar av informationen i den här KOLOFONEN (som *inte* är en del av den ursprungliga manualsidan), skicka ett e-postmeddelande till man-pages@man7.org ```

Sidslut

Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/git-fast-export.1.html Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp som har sponsrat Linux.se med webbhotell.