Linux: Menentukan direktori tingkat atas saat membuat arsip zip


17

Saya punya proyek dengan struktur direktori yang biasa (src /, bin /, ...), yaitu

project-name/
|-- bin
|-- lib
|-- src
`-- Makefile

Dan ingin membuat arsip dengan struktur direktori berikut:

project-name-version/
|-- bin
|-- lib
|-- src
`-- Makefile

Apakah ada cara yang rapi untuk melakukan ini, yang menghindari membuat direktori sementara di project-name/tempat lain, kemudian menyalin file di dalam akhirnya memanggil zip -r ...direktori sementara itu?

(Pada dasarnya saya mencari beberapa jenis awalan jalur atau opsi jalur relatif.)

Jawaban:


9

Mungkin ini sudah terjadi pada Anda, tetapi mengapa tidak menggunakan tautan sym daripada menyalin semuanya?

ln -s project-name project-name-version

kemudian gunakan zip -rmelalui tautan sym ( zipapakah dereference sym links secara default)? Setelah selesai, Anda dapat dengan mudah rmtautan sym. Mungkin itu bukan solusi yang paling elegan, tapi saya tidak tahu cara yang jelas untuk melakukannya secara ziplangsung.


1
Ini juga berfungsi dengan tarjika Anda menggunakan -hbendera.
Kyle Strand

(Saya juga menggunakan zbendera; Saya tidak yakin apakah itu memengaruhinya.)
Kyle Strand

15

Ini lebih merupakan saran daripada jawaban: gunakan Git !

Jika Anda menyiapkan repositori Git untuk proyek Anda, semuanya menjadi sangat mudah:

git archive HEAD --prefix=project-name-version/ \
    --format=zip -o project-name-version.zip

1
Nasihat yang bagus, terima kasih. dokumentasi arsip git: git-scm.com/docs/git-archive
Meglio

1
Meskipun menggunakan kontrol versi adalah ide yang bagus, jawaban ini tidak cocok dengan pertanyaan untuk kasus umum.
raimue

@Raim "Ini lebih merupakan saran daripada jawaban: gunakan Git!" ditulis di sana sejak 4 tahun, terima kasih telah menunjukkannya ...
cYrus

1
Jika ini tidak dimaksudkan sebagai jawaban, itu harus dikonversi menjadi komentar.
raimue

1
@ Gregor Saya pikir itu perilaku yang diinginkan karena file seperti itu sebenarnya bagian dari proyek, toh Anda dapat menggunakan atribut Git, misalnya, membuat file bernama .gitattributesmengandung .git* export-ignore.
cYrus
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.