Chcę użyć git, aby zachować historyczny zapis faktycznych zależności używanych przez aplikację w czasie, z większą wiernością, niż mogę uzyskać od menedżera pakietów.Git - Jak zgnieść zmiany do zignorowanych plików bez utraty tych zmian?
Używam tych gałęzi:
- mistrz: tylko kod źródłowy. Zależności w
.gitignore
- produkcji: kodu źródłowego i zależności
- Build- $ TIMESTAMP: chwilowy oddział wykorzystane do wymuszenia popełnić ignorowanych plików
a ten skrypt, build-release.sh
:
DEV_MODULES="mocha chai bower coffeelint"
BUILT_FILES="node_modules build"
DATE=$(date)
TIMESTAMP=$(date +"%s")
BRANCH=$(git rev-parse --abbrev-ref HEAD)
# create a temporary branch with the current dependencies and binaries
npm uninstall $DEV_MODULES
git checkout -b build-$TIMESTAMP
git add --all --force $BUILT_FILES
git commit -m "copy $BUILT_FILES from $BRANCH"
# merge the temporary branch into the build branch
git branch build || echo "build branch already exists"
git checkout build --force
git merge build-$TIMESTAMP --strategy=subtree -m "Build as of $DATE"
git branch -D build-$TIMESTAMP
# restore the original branch
git checkout $BRANCH
git checkout build -- $BUILT_FILES
git rm -r --cached $BUILT_FILES
Który działa i daje mi użyteczny widok zmian w źródle, zależnościach i plikach binarnych z jednej wersji na drugą:
Wymaga to jednak dwukrotnie większej liczby zatwierdzeń. Chcę drzewo wyglądać tak:
Jak mogę połączyć „Kopiuj pliki budowane” popełnić z „budować jak z” popełnić?
Kiedy próbuję git merge --squash
, kończy się z państwem, które było na build
zamiast stanu, który był na build-$TIMESTAMP
, która jest niepoprawna (chcę zaimportować zmiany do ignorowanych plików, ale połączyć wydaje się nie mieć język Zrób to). Kiedy próbuję git rebase --onto build build-$TIMESTAMP
, tracę pochodzenie nowego zatwierdzenia.
Chcę nagrać dokładnie pliki dostaję na build-$TIMESTAMP
oddziału, ale zarówno z build
i master
gałęzie jak rodziców, a następnie wskazać build
oddziału do tego zobowiązać.
Dlaczego właśnie chcesz ignorować pliki? Jeśli po prostu chcesz śledzić historyczne zależności, dlaczego nie po prostu udokumentować je w ręcznie utworzonym pliku? – Julian
Chciałbym również powiązać dokładne zależności, które przeszły testy i przekazać je do produkcji, bez założenia, że wszystkie serwery produkcyjne będą w stanie zainstalować identycznie. Używanie git do przesyłania delt wydawało się dobrym sposobem na osiągnięcie tego, a także uzyskanie śledzenia zmian. – Phssthpok
https://www.npmjs.org/doc/cli/npm-prune.html użyj 'npm prune --production', aby usunąć devDependencies;) – soyuka