Przepraszam za słabą jakość samego pytania, ale natrafiam na przypadek, w którym jedyny znany mi język koliduje z istniejącym żargonem. Proszę wskazać mi właściwy żargon, ponieważ podejrzewam, że mógłbym szukać tej odpowiedzi, gdybym ją znał.

Chcę utworzyć „poprawkę” za pomocą git, która zawiera pliki niezbędne do zmiany z jednej wersji projektu na inną. Nie chcę rzeczywistej łatki GIT, która aktualizuje mastera na podstawie danych wyjściowych gałęzi, ale raczej coś podobnego do zipa zawierającego wszystkie pliki zmienione od czasu danej aktualizacji.

Sytuacja jest taka, że ​​nie chcę po prostu wrzucać na serwer całej zawartości zaktualizowanej wersji (jest dużo plików, które nie zostały zmienione), ale jednocześnie nie chcę przechodzić przez i ręcznie wybierz około 300 plików.

Wiem, że GIT ma pewnego rodzaju opcję wdrażania FTP, ale usługa, z której korzystamy, tego nie zapewnia, więc o ile wiem, czego potrzebuję, jest czymś podobnym do komercyjnej poprawki delta, która jest rozpowszechniana za każdym razem, gdy firma aktualizuje produkt. Uważam, że jest bardzo mało prawdopodobne, aby GIT nie zapewniał COŚ podobnego do tej funkcjonalności, ale nie wiem, gdzie/jak to znaleźć.

Edycja: Ponieważ z jednej odpowiedzi wygląda na to, że może to być istotne, dotyczy to aplikacji internetowej, więc mówię o śledzeniu plików css, php, html i js, prawdopodobnie z wrzuconą grafiką, mimo że źródło systemy sterowania nie działają dobrze ze sztuką.

git
2
RonLugge 17 luty 2012, 23:00

3 odpowiedzi

Najlepsza odpowiedź

OK, jeśli powiemy o rozwiązaniu Windows zorientowanym na GUI wokół GIT, będę mógł zobaczyć dodatkową egzotyczną perwersję (Git-fanboys, usiądź!!!):

TortoiseHG (1- Windows 2 - GUI 3 - dla Mercurial SCM) z rozszerzeniem hg-git

Dodaj repozytorium git do THG, użyj menu kontekstowego w panelu zestawów zmian, Eksportuj - Archiwum - "Tylko pliki..."

Git Repo

Archive only changes

Oba zrzuty ekranu pochodzą z mojego repozytorium git, w pełni obsługiwanego przez TortoiseHG

0
Lazy Badger 19 luty 2012, 15:33

Jeśli przesyłanie diff do xargs jest dla ciebie za trudne, możesz spróbować

  • git-deploy
  • git-ftp
  • połącz git archive i git diff w formularzu git archive -o update.zip HEAD $(git diff --name-only HEAD^)
4
Lazy Badger 18 luty 2012, 01:24

Ron, mam nadzieję, że to pomoże:

    git diff --name-only HEAD HEAD^
    CCodeClasses.cpp
    CCodeClasses.h
    CTypeClasses.cpp
    CTypeClasses.h
    CTypeResolver.cpp
    CTypeResolver.h
    DFSearch.cpp
    DFSearch.h
    Util.cpp
    Util.h
    x32wrapper.cpp
    x32wrapper.h
    mfcreplacements.h

Gdzie możesz zastąpić HEAD identyfikatorem zatwierdzenia, który chcesz uzyskać, aby uzyskać listę zmienionych plików, a następnie przesłać ją do polecenia tar lub czegoś takiego. Chciałbym wiedzieć, czy jest na to lepszy sposób, ponieważ od czasu do czasu muszę zrobić to samo.

2
macduff 17 luty 2012, 23:07