Gå til innhold

Anbefalte innlegg

Jeg har en hel rekke prosjekter som jeg har planer om å trekke ut av et annet for å gjøre de til dependencies istedet for å ligge direkte under en massiv monlittisk løsning. Jeg har allerede trukket ut et prosjekt (git filter-branch --subdirectory-filter foo/hihi), men når jeg forsøker de andre så sitter jeg igjen med en tom mappe.

 

git clone https://[email protected]/Foo.git Hihi
cd Hihi
git filter-branch --subdirectory-filter ./Foo/Hihi "--" --all
git remote rm origin

 

Den nøster opp 38 commits, og det tar et par sekunder. En ls viser derimot at den har fjernet alt. Foo/Hihi er i utgangspunktet ikke tom.

 

Kanskje jeg har missforstått filter-branch?

Endret av GeirGrusom
Lenke til kommentar
Videoannonse
Annonse

I utgangspunktet tar du bare med navnet på undermappen i subdirectory-filter, ikke hele pathen. Kan være at den ser etter innhold i (mappen du klonet inn i)/Foo/Hihi i stedet for (mappen du klonet inn i)/Hihi når du kjører det sånn. Hvis den mappen ikke finnes, vil du sitte igjen med en tom mappe når det er ferdig, siden den samtidig fjerner commits som ikke har påvirket subdirectoryet du spør etter (altså samtlige, hvis det ikke finnes).

 

Om du prøver dette:

 

git filter-branch --subdirectory-filter Hihi -- --all

// i stedet for

git filter-branch --subdirectory-filter ./Foo/Hihi -- --all

 

Ser det annerledes ut da? Eller har jeg misforstått mappestrukturen din?

Lenke til kommentar

I utgangspunktet tar du bare med navnet på undermappen i subdirectory-filter, ikke hele pathen. Kan være at den ser etter innhold i (mappen du klonet inn i)/Foo/Hihi i stedet for (mappen du klonet inn i)/Hihi når du kjører det sånn. Hvis den mappen ikke finnes, vil du sitte igjen med en tom mappe når det er ferdig, siden den samtidig fjerner commits som ikke har påvirket subdirectoryet du spør etter (altså samtlige, hvis det ikke finnes).

 

Om du prøver dette:

 

git filter-branch --subdirectory-filter Hihi -- --all

// i stedet for

git filter-branch --subdirectory-filter ./Foo/Hihi -- --all

 

Ser det annerledes ut da? Eller har jeg misforstått mappestrukturen din?

 

Mer korrekt-ish ser det slik ut:

 

~/Projects/ProsjektetsNavn/app/Presentation/RoleEditor

 

Jeg skal ha ut fra ProsjektetsNavn mappen app/Presentation/RoleEditor

 

Så jeg skriver slik:

git filter-branch --subdirectory-filter app/Presentation/RoleEditor -- --all

 

Da forventer jeg at mappen ProsjektetsNavn skal inneholde alt som ligger i RoleEditor, men istedet er mappen tom.

Lenke til kommentar

Høres merkelig ut, det burde fungere sånn som du gjør det hvis den app/Presentation/RoleEditor-mappen ikke er tom. Du kan jo eventuelt prøve med subtree for å splitte det inn i et eget repository?

 

git subtree split -P app/Presentation/RoleEditor -b roleeditor
cd ..
mkdir RoleEditor
cd RoleEditor
git init
git fetch ../ProsjektetsNavn roleeditor
git checkout -b master FETCH_HEAD

 

Og så rydde opp i det originale repo'et og legge til remotes etc. i det nye.

Lenke til kommentar
  • 3 måneder senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...