ÔÇťGit exportÔÇŁ (ÔÇťsvn exportÔÇŁ gibi) m─▒?


Al─▒nan cevaba git


.git Depo dizini olmayan bir a─čac─▒n kopyas─▒n─▒ yaratan iyi bir "git export" ├ž├Âz├╝m├╝ olup olmad─▒─č─▒n─▒ merak ediyorum . Bildi─čim en az ├╝├ž y├Ântem var:

  1. git clone ard─▒ndan .git depo dizinini kald─▒rarak .
  2. git checkout-index Bu i┼člevselli─če itiraz ediyor, ancak "Sadece istedi─činiz a─čac─▒ dizine oku ..." ile ba┼čl─▒yor, bu nas─▒l yap─▒laca─č─▒ndan tam olarak emin de─čilim.
  3. git-export bu, esasen git clone ge├žici bir yere, ard─▒ndan rsync --exclude='.git' da son hedefe giden bir ├╝├ž├╝nc├╝ taraf beti─čidir .

Bu ├ž├Âz├╝mlerin hi├žbiri beni tatmin edici bulmuyor. En yak─▒n olan─▒ svn export se├ženek 1 olabilir, ├ž├╝nk├╝ ikisi de hedef dizinin ├Ânce bo┼č olmas─▒n─▒ gerektirir. Fakat se├ženek 2 daha da iyi g├Âr├╝n├╝yor, san─▒r─▒m bir a─čac─▒ endekse okuman─▒n ne demek oldu─čunu ├ž├Âzebilirim.


2299









Cevap say─▒s─▒n─▒ say: 30






Muhtemelen bunu ba┼čarman─▒n en basit yolu git archive . Sadece geni┼čletilmi┼č a─čaca ger├žekten ihtiyac─▒n─▒z varsa, b├Âyle bir ┼čey yapabilirsiniz.

 git archive master | tar -x -C /somewhere/else
 

Git'ten bir ┼čey ihra├ž etmem gereken ├žo─ču zaman, her durumda s─▒k─▒┼čt─▒r─▒lm─▒┼č bir ar┼čiv istiyorum, bu y├╝zden b├Âyle bir ┼čey yap─▒yorum.

 git archive master | bzip2 >source-tree.tar.bz2
 

ZIP ar┼čivi:

 git archive --format zip --output /full/path/to/zipfile.zip master 
 

git help archive Daha fazla ayr─▒nt─▒ i├žin olduk├ža esnek.


Ar┼čivin .git dizinini i├žermemesine ra─čmen, bunun gibi .gitignore, .gitattributes, vb. Gibi ba┼čka gizli git ├Âzel dosyalar─▒ i├žerece─čini unutmay─▒n. Bunlar─▒ ar┼čivde istemiyorsan─▒z, export-ignore ├Âzelli─čini bir .gitattributes dosyas─▒nda kullan─▒n ve ar┼čivinizi yapmadan ├Ânce bunu kabul edin. Daha fazla oku...


Not: Dizini d─▒┼ča aktarmakla ilgileniyorsan─▒z, komut

 git checkout-index -a -f --prefix=/destination/path/
 

(Daha fazla bilgi i├žin Greg'in cevab─▒na bak─▒n─▒z)


2346







Se├ženek 2'nin ne anlama geldi─čini ├Â─črendim. Bir havuzdan ┼čunlar─▒ yapabilirsiniz:

 git checkout-index -a -f --prefix=/destination/path/
 

Yolun sonundaki e─čik ├žizgi ├Ânemlidir, aksi takdirde dosyalar─▒n 'yol' ├Âneki ile / hedefte olmas─▒na neden olur.

Normal bir durumda dizin deponun i├žeri─čini i├žerdi─činden, ÔÇťistenen a─čac─▒ dizine okumakÔÇŁ i├žin ├Âzel bir ┼čey yoktur. O zaten orada.

-a Bayrak (Emin buna ne istiyorum yapmaz, ├ž├╝nk├╝ bu durumda bu bayra─č─▒ atlamak i├žin ne anlama geldi─čini de─čilim) endeksindeki t├╝m dosyalar─▒ kontrol etmek gereklidir. -f Bu komut normalde yapmaz ├ž─▒kt─▒, herhangi bir varolan dosyalar─▒n ├╝zerine bayrak kuvvetleri.

Bu arad─▒─č─▒m "git export" t├╝r├╝nden g├Âr├╝n├╝yor.


315







git archive ayr─▒ca uzaktan depo ile ├žal─▒┼č─▒r.

 git archive --format=tar \
--remote=ssh://remote_server/remote_repository master | tar -xf -
 

Repo i├žindeki belirli bir yolu d─▒┼ča aktarmak i├žin git'e son arg├╝man olarak istedi─činiz kadar yol ekleyin, ├Ârne─čin:

 git archive --format=tar \
--remote=ssh://remote_server/remote_repository master path1/ path2/ | tar -xv
 

253








g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin

Depo GitHub'da bar─▒nd─▒r─▒l─▒yorsa ├Âzel bir cevap.

Sadece kullan svn export .

Bildi─čim kadar─▒yla Github izin vermiyor archive --remote . Her ne kadar GitHub svn uyumlu olsa ve hepsine svn eri┼čilebilen t├╝m git repolar─▒ olmas─▒na ra─čmen, GitHub url'nizde svn export yapt─▒─č─▒n─▒z ayarlamalar ile normalde yapt─▒─č─▒n─▒z gibi kullanabilirsiniz .

├ľrne─čin t├╝m bir depoyu d─▒┼ča aktarmak i├žin trunk , URLÔÇÖnin yerini master (veya projenin HEAD ┼čubesinin ne ┼čekilde ayarland─▒─č─▒n─▒ ) de─či┼čtirin:

 svn export https://github.com/username/repo-name/trunk/
 

Tek bir dosyay─▒ veya hatta belirli bir yolu veya klas├Âr├╝ verebilirsiniz:

 svn export https://github.com/username/repo-name/trunk/src/lib/folder
 

JQuery JavaScript Library ile ├ľrnekhttps://github.com/jquery/jquery

HEAD ┼×ube veya ana dal mevcuttur kullan─▒yor olacak trunk :

 svn ls https://github.com/jquery/jquery/trunk
 

┼×ube d─▒┼č─▒ HEAD ┼čubeler alt─▒nda eri┼čilebilir olacakt─▒r /branches/ :

 svn ls https://github.com/jquery/jquery/branches/2.1-stable
 

T├╝m etiketler alt─▒nda /tags/ ayn─▒ ┼čekilde:

 svn ls https://github.com/jquery/jquery/tags/2.1.3
 

55







G├Ânderen Git Manuel :

Git-checkout-index'i "b├╝t├╝n bir a─čac─▒ d─▒┼ča aktar" i├žin kullanma

├ľnek yetene─či, temelde git-checkout-index'in "a─ča├ž olarak d─▒┼ča aktar" i┼člevi olarak kullan─▒lmas─▒n─▒ ├Ânemsiz k─▒lar. ─░stedi─činiz a─čac─▒ dizine ekleyin ve ┼čunu yap─▒n:

$ git checkout-index --prefix=git-export-dir/ -a


40







Bunun git-checkout-index gibi kullanabilece─činiz basit bir paketleyici yazd─▒m :

 git export ~/the/destination/dir
 

Hedef dizin zaten mevcutsa, -f veya eklemeniz gerekir --force .

Kurulum basittir; sadece beti─či i├žinde bir yere b─▒rak─▒n ve PATH ├žal─▒┼čt─▒r─▒labilir oldu─čundan emin olun.

─░├žin github deposu git-export


38







Git'in SVN'den daha az sorun oldu─ču anla┼č─▒l─▒yor. Git sadece depo k├Âk├╝ne bir .git klas├Âr├╝ koyarken SVN her alt dizine bir .svn klas├Âr├╝ koyar. Bu y├╝zden "svn export" ├Âzyinelemeli komut sat─▒r─▒ sihrini ├Ânler, oysa Git ├Âzyinimi gerekli de─čildir.


36







E┼čde─čeri

 svn export . otherpath
 

mevcut bir depoda

 git archive branchname | (cd otherpath; tar x)
 

E┼čde─čeri

 svn export url otherpath
 

oldu─ču

 git archive --remote=url branchname | (cd otherpath; tar x)
 

27







Dosyalar─▒ hari├ž tutmuyorsan─▒z .gitattributes export-ignore deneyin git checkout

 mkdir /path/to/checkout/
git --git-dir=/path/to/repo/.git --work-tree=/path/to/checkout/ checkout -f -q
 

-f Dizinden
yollar─▒ kontrol ederken, birle┼čtirilmemi┼č giri┼člerde ba┼čar─▒s─▒z olmay─▒n; bunun yerine, birle┼čtirilmemi┼č giri┼čler yoksay─▒l─▒r.

ve

-q
Ayr─▒nt─▒l─▒ ├Ânlemek

Ek olarak, herhangi bir ┼×ube veya Etiketi veya SVN'deki SHA1'i eklemek gibi belirli bir Teslim Karar─▒n─▒ alabilirsiniz (Git'teki SHA1, SVN'deki Revizyon Numaras─▒na e┼čittir)

 mkdir /path/to/checkout/
git --git-dir=/path/to/repo/.git --work-tree=/path/to/checkout/ checkout 2ef2e1f2de5f3d4f5e87df7d8 -f -q -- ./
 

/path/to/checkout/ Git herhangi bir dosyay─▒ silmez, bo┼č olmal─▒d─▒r, ancak herhangi bir uyar─▒ olmadan ayn─▒ isimde dosyalar ├╝zerine yaz─▒l─▒r

G├ťNCELLEME: Ba┼čs─▒z bir sorunu ├Ânlemek veya etiket, dal veya SHA1 ile d─▒┼ča aktarma i├žin ├Âdeme yaparken ├žal─▒┼čma deposunu bozulmadan b─▒rakmak -- ./ i├žin sonuna eklemelisiniz

─░kili ├žizgi -- , gitmeden sonraki her ├žizginin yol ya da dosya oldu─čunu ve bu durumda git checkout da de─či┼čmemesini s├Âyler . HEAD

├ľrnekler:

Bu komut sadece libs dizinini ve ayn─▒ zamanda readme.txt tam olarak vermi┼č oldu─ču dosyay─▒ al─▒r.

 git --git-dir=/path/to/repo/.git --work-tree=/path/to/checkout/ checkout fef2e1f2de5f3d4f5e87df7d8 -f -q -- ./libs ./docs/readme.txt
 

Bu my_file_2_behind_HEAD.txt , ba┼č─▒n arkas─▒nda iki i┼člem yaratacak (├╝zerine yazacak) HEAD^2

 git --git-dir=/path/to/repo/.git --work-tree=/path/to/checkout/ checkout HEAD^2 -f -q -- ./my_file_2_behind_HEAD.txt
 

Ba┼čka bir ┼čubenin ihracat─▒n─▒ yapmak

 git --git-dir=/path/to/repo/.git --work-tree=/path/to/checkout/ checkout myotherbranch -f -q -- ./
 

Deponun ./ k├Âk├╝ne g├Âreceli olarak bildirim


22







Git-submodules'─▒ yo─čun olarak kullan─▒yorum. Bu benim i├žin ├žal─▒┼č─▒yor:

 rsync -a ./FROM/ ./TO --exclude='.*'
 

21







Git deposunu d─▒┼ča aktarman─▒n bir yolunu ararken bu sayfaya s─▒k├ža rastlad─▒m. Bu soruya cevab─▒m, svn ihracat─▒n─▒n tasar─▒mla ilgili olarak git'e k─▒yasla ├╝├ž ├Âzelli─či oldu─čunu d├╝┼č├╝n├╝yor; ├ž├╝nk├╝ svn merkezi bir depo yakla┼č─▒m─▒ izliyor:

  • T├╝m revizyonlar─▒ d─▒┼ča aktararak trafi─či uzak bir depo konumuna indirir.
  • Verme dizininde meta bilgileri i├žermez
  • Svn kullanarak belirli bir dal─▒n d─▒┼ča aktar─▒lmas─▒ uygun yolun belirtilmesiyle ger├žekle┼čtirilir.

     git clone --depth 1 --branch master git://git.somewhere destination_path
    rm -rf destination_path/.git
     

Belirli bir s├╝r├╝m olu┼čtururken ├Ârne─čin --branch stable veya gibi sabit bir dal klonlamakta fayda vard─▒r --branch release/0.9 .


19







Bu i┼člem t├╝m i├žeri─či kopyalar. Bunu, git klonlanm─▒┼č projeleri web uygulamam─▒n git deposuna .git ├Â─česi olmadan d─▒┼ča aktarmak i├žin kullan─▒yorum.

cp -R. /path-to-git-repo / path / hedef / hedef /

D├╝z eski bash sadece harika ├žal─▒┼č─▒yor :)


16







Klonlama kadar basit, sonra .git klas├Âr├╝n├╝ silin:

git clone url_of_your_repo path_to_export && rm -rf path_to_export/.git


13







Evet, bu , kodunuzu ar┼čive gitmeden dahil etmek i├žin ar┼čivlemeniz i├žin temiz ve d├╝zenli bir komuttur ve git i┼člem ge├žmi┼či hakk─▒nda endi┼čelenmeden dola┼čmak i├žin iyidir.

 git archive --format zip --output /full/path/to/zipfile.zip master 
 

11







Sadece belirtmek isterim ki, oldu─čun durumda

  1. havuzun alt klas├Âr├╝n├╝ d─▒┼ča aktarma (bu ┼čekilde SVN d─▒┼ča aktarma ├Âzelli─čini kulland─▒m)
  2. bu klas├Ârden da─č─▒t─▒m hedefine her ┼čeyi kopyalamakta sorun yok
  3. ve zaten t├╝m deponun bir kopyas─▒ yerinde.

Daha sonra sadece cp foo [destination] belirtilen yerine kullanabilirsiniz git-archive master foo | -x -C [destination] .


10







GitHub kullan─▒c─▒lar─▒ i├žin, d─▒┼ča aktarma URL'si ge├žici oldu─čundan , git archive --remote y├Ântem do─črudan ├žal─▒┼čmaz . GitHubÔÇÖdan URLÔÇÖyi istemeniz ve ard─▒ndan bu URLÔÇÖyi indirmeniz gerekir. Bunu kolayla┼čt─▒r─▒r:https://developer.github.com/v3/repos/contents/%23get-archive-link#get-archive-link curl

 curl -L https://api.github.com/repos/VENDOR/PROJECT/tarball | tar xzf -
 

Bu size verilen kodu yerel bir dizinde verecektir. ├ľrnek:

 $ curl -L https://api.github.com/repos/jpic/bashworks/tarball | tar xzf -
$ ls jpic-bashworks-34f4441/
break  conf  docs  hack  LICENSE  mlog  module  mpd  mtests  os  README.rst  remote  todo  vcs  vps  wepcrack
 

D├╝zenleme Kodunun
belirli, mevcut bir dizine girmesini istiyorsan─▒z (github'daki rastgele yerine):

 curl -L https://api.github.com/repos/VENDOR/PROJECT/tarball | \
tar xzC /path/you/want --strip 1
 

10







Uzak bir repoyu herhangi bir taahh├╝tte zip dosyas─▒ olarak ar┼čivleyebilirsiniz.

 git archive --format=zip --output=archive.zip [email protected]:PROJECTNAME.git HASHOFGITCOMMIT
 

9







Git-Export'un Bash uygulamas─▒.

.Empty dosya olu┼čturma ve kald─▒rma i┼člemlerini 'git-ar┼čiv' uygulamas─▒nda yeniden kullanmak amac─▒yla kendi i┼člevlerine g├Âre ay─▒rd─▒m (daha sonra yay─▒nlanacak).

─░stenmeyen dosyalar─▒ hedef d─▒┼ča aktarma klas├Âr├╝nden kald─▒rmak i├žin i┼čleme '.gitattributes' dosyas─▒n─▒ da ekledim. 'Git-export' i┼člevini daha verimli hale getirirken i┼čleme dahil ayr─▒nt─▒l─▒ ayr─▒nt─▒ dahil edildi.

EMPTY_FILE = "bo┼č";

 function create_empty () {
## Processing path (target-dir):
    TRG_PATH="${1}";
## Component(s):
    EXCLUDE_DIR=".git";
echo -en "\nAdding '${EMPTY_FILE}' files to empty folder(s): ...";
    find ${TRG_PATH} -not -path "*/${EXCLUDE_DIR}/*" -type d -empty -exec touch {}/${EMPTY_FILE} \;
#echo "done.";
## Purging SRC/TRG_DIRs variable(s):
    unset TRG_PATH EMPTY_FILE EXCLUDE_DIR;
    return 0;
  }

declare -a GIT_EXCLUDE;
function load_exclude () {
    SRC_PATH="${1}";
    ITEMS=0; while read LINE; do
#      echo -e "Line [${ITEMS}]: '${LINE%%\ *}'";
      GIT_EXCLUDE[((ITEMS++))]=${LINE%%\ *};
    done < ${SRC_PATH}/.gitattributes;
    GIT_EXCLUDE[${ITEMS}]="${EMPTY_FILE}";
## Purging variable(s):
    unset SRC_PATH ITEMS;
    return 0;
  }

function purge_empty () {
## Processing path (Source/Target-dir):
    SRC_PATH="${1}";
    TRG_PATH="${2}";
echo -e "\nPurging Git-Specific component(s): ... ";
    find ${SRC_PATH} -type f -name ${EMPTY_FILE} -exec /bin/rm '{}' \;
    for xRULE in ${GIT_EXCLUDE[@]}; do
echo -en "    '${TRG_PATH}/{${xRULE}}' files ... ";
      find ${TRG_PATH} -type f -name "${xRULE}" -exec /bin/rm -rf '{}' \;
echo "done.'";
    done;
echo -e "done.\n"
## Purging SRC/TRG_PATHs variable(s):
    unset SRC_PATH; unset TRG_PATH;
    return 0;
  }

function git-export () {
    TRG_DIR="${1}"; SRC_DIR="${2}";
    if [ -z "${SRC_DIR}" ]; then SRC_DIR="${PWD}"; fi
    load_exclude "${SRC_DIR}";
## Dynamically added '.empty' files to the Git-Structure:
    create_empty "${SRC_DIR}";
    GIT_COMMIT="Including '${EMPTY_FILE}' files into Git-Index container."; #echo -e "\n${GIT_COMMIT}";
    git add .; git commit --quiet --all --verbose --message "${GIT_COMMIT}";
    if [ "${?}" -eq 0 ]; then echo " done."; fi
    /bin/rm -rf ${TRG_DIR} && mkdir -p "${TRG_DIR}";
echo -en "\nChecking-Out Index component(s): ... ";
    git checkout-index --prefix=${TRG_DIR}/ -q -f -a
## Reset: --mixed = reset HEAD and index:
    if [ "${?}" -eq 0 ]; then
echo "done."; echo -en "Resetting HEAD and Index: ... ";
        git reset --soft HEAD^;
        if [ "${?}" -eq 0 ]; then
echo "done.";
## Purging Git-specific components and '.empty' files from Target-Dir:
            purge_empty "${SRC_DIR}" "${TRG_DIR}"
          else echo "failed.";
        fi
## Archiving exported-content:
echo -en "Archiving Checked-Out component(s): ... ";
        if [ -f "${TRG_DIR}.tgz" ]; then /bin/rm ${TRG_DIR}.tgz; fi
        cd ${TRG_DIR} && tar -czf ${TRG_DIR}.tgz ./; cd ${SRC_DIR}
echo "done.";
## Listing *.tgz file attributes:
## Warning: Un-TAR this file to a specific directory:
        ls -al ${TRG_DIR}.tgz
      else echo "failed.";
    fi
## Purgin all references to Un-Staged File(s):
   git reset HEAD;
## Purging SRC/TRG_DIRs variable(s):
    unset SRC_DIR; unset TRG_DIR;
    echo "";
    return 0;
  }
 

Çıktı:

$ git-export /tmp/rel-1.0.0

'.Empty' dosyalar─▒n─▒ bo┼č klas├Ârlere eklemek: ... yap─▒ld─▒.

Teslim Alma Dizini (ler): ... yap─▒l─▒r.

HEAD ve Index s─▒f─▒rlan─▒yor: ... bitti.

Git-Specific bile┼čenlerin temizlenmesi: ...

'/tmp/rel-1.0.0/{.buildpath}' dosyalar─▒ ... bitti. '

'/tmp/rel-1.0.0/{.project}' dosyalar─▒ ... bitti. '

'/tmp/rel-1.0.0/{.gitignore}' dosyalar─▒ ... bitti. '

'/tmp/rel-1.0.0/{.git}' dosyalar─▒ ... bitti. '

'/tmp/rel-1.0.0/{.gitattributes}' dosyalar─▒ ... yap─▒ld─▒. '

'/tmp/rel-1.0.0/{*.mno}' dosyalar─▒ ... bitti. '

'/tmp/rel-1.0.0/{*~}' dosyalar─▒ ... bitti. '

'/tmp/rel-1.0.0/{.*~}' dosyalar─▒ ... bitti. '

'/tmp/rel-1.0.0/{*.swp}' dosyalar─▒ ... yap─▒ld─▒. '

'/tmp/rel-1.0.0/{*.swo}' dosyalar─▒ ... bitti. '

'/tmp/rel-1.0.0/{.DS_Store}' dosyalar─▒ ... bitti. '

'/tmp/rel-1.0.0/{.settings}' dosyalar─▒ ... bitti. '

'/tmp/rel-1.0.0/{.empty}' dosyalar─▒ ... yap─▒ld─▒. '

yap─▒l─▒r.

Checked-Out bile┼čenlerinin ar┼čivlenmesi: ... yap─▒ld─▒.

-rw-r - r - 1 y├Ânetici tekerle─či 25445901 3 Kas 12:57 /tmp/rel-1.0.0.tgz

┼×imdi 'git archive' i┼člevini 'create_empty' i┼člevini ve di─čer ├Âzellikleri kullanan tek bir s├╝rece dahil ettim.

 function git-archive () {
    PREFIX="${1}"; ## sudo mkdir -p ${PREFIX}
    REPO_PATH="`echo "${2}"|awk -F: '{print $1}'`";
    RELEASE="`echo "${2}"|awk -F: '{print $2}'`";
    USER_PATH="${PWD}";
echo "$PREFIX $REPO_PATH $RELEASE $USER_PATH";
## Dynamically added '.empty' files to the Git-Structure:
    cd "${REPO_PATH}"; populate_empty .; echo -en "\n";
#    git archive --prefix=git-1.4.0/ -o git-1.4.0.tar.gz v1.4.0
# e.g.: git-archive /var/www/htdocs /repos/domain.name/website:rel-1.0.0 --explode
    OUTPUT_FILE="${USER_PATH}/${RELEASE}.tar.gz";
    git archive --verbose --prefix=${PREFIX}/ -o ${OUTPUT_FILE} ${RELEASE}
    cd "${USER_PATH}";
    if [[ "${3}" =~ [--explode] ]]; then
      if [ -d "./${RELEASE}" ]; then /bin/rm -rf "./${RELEASE}"; fi
      mkdir -p ./${RELEASE}; tar -xzf "${OUTPUT_FILE}" -C ./${RELEASE}
    fi
## Purging SRC/TRG_DIRs variable(s):
    unset PREFIX REPO_PATH RELEASE USER_PATH OUTPUT_FILE;
    return 0;
  }
 

8







Alt mod├╝ller ile ├žal─▒┼čan bir ┼čey istiyorsan─▒z bu bir gitmeye de─čer olabilir.

Not:

  • MASTER_DIR = alt mod├╝llerinizle birlikte bir ├Âdeme de kontrol edildi
  • DEST_DIR = bu ihracat─▒n bitece─či yer
  • E─čer rsync varsa, ayn─▒ ┼čeyi daha az top a─čr─▒s─▒yla yapabilece─čini d├╝┼č├╝n├╝yorum.

Varsay─▒mlar:

  • Bunu MASTER_DIR ├╝st dizininden ├žal─▒┼čt─▒rman─▒z gerekir (├Ârn. MASTER_DIR cd ..)
  • DEST_DIR olu┼čturuldu─ču varsay─▒lmaktad─▒r. ─░sterseniz bir DEST_DIR olu┼čturulmas─▒n─▒ i├žerecek ┼čekilde de─či┼čtirmek olduk├ža kolayd─▒r.

cd MASTER_DIR && tar -zcvf ../DEST_DIR/export.tar.gz --exclude = '. git *'. && cd ../DEST_DIR/ && tar xvfz export.tar.gz && rm export.tar.gz


8







Benim tercih asl─▒nda bir var olacakt─▒r dist sizin Makefiledaki hedef (veya di─čer yap─▒ sistemi) o ihracat (uygun ne olursa olsun .tar.bz2, .zip, .jar veya) Kodunuzun da─č─▒t─▒labilir ar┼čivi. GNU autotools veya Perl'in MakeMaker sistemlerini kullan─▒yorsan─▒z, bunun sizin i├žin otomatik olarak var oldu─čunu d├╝┼č├╝n├╝yorum. De─čilse, eklemenizi ┼čiddetle tavsiye ederim.

ETA (2012-09-06): Vay, sert indirimler. Da─č─▒t─▒mlar─▒n─▒z─▒ kaynak kod kontrol arac─▒n─▒zdan ziyade yap─▒m ara├žlar─▒n─▒zla olu┼čturman─▒n daha iyi oldu─čuna inan─▒yorum. Yap─▒m ara├žlar─▒yla eserler in┼ča etmeye inan─▒yorum. ┼×u andaki i┼čimde ana ├╝r├╝n├╝m├╝z bir kar─▒nca hedefi ile in┼ča edilmi┼č. Anahtarlama kaynak kodu kontrol sistemlerinin ortas─▒nday─▒z ve bu kar─▒nca hedefinin varl─▒─č─▒ g├Â├žte daha az g├╝├žl├╝k anlam─▒na geliyor.


6







Bu, bir aral─▒ktaki dosyalar─▒ (C'den G'ye) bir tar dosyas─▒na kopyalayacakt─▒r. Not: Bu sadece dosyalar─▒ i┼če al─▒r. Deponun tamam─▒ de─čil. Buradan hafif├že de─či┼čtirilmi┼čhttps://stackoverflow.com/questions/4541300/export-only-modified-and-added-files-with-folder-structure-in-git

├ľrnek Taahh├╝t Tarihi

A -> B -> C -> D -> E -> F -> G -> H -> I

 git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT C~..G | xargs tar -rf myTarFile.tar
 

git-diff-tree El Kitab─▒

-r -> alt a─ča├žlara tekrar

--no-commit-id -> git diff-tree uygun oldu─čunda de─čerlendirme kimli─čine sahip bir sat─▒r ├╝retir. Bu bayrak taahh├╝t kimli─či ├ž─▒k─▒┼č─▒n─▒ bast─▒rd─▒.

- sadece isim -> Sadece de─či┼čtirilen dosyalar─▒n isimlerini g├Âster.

--diff-filter = ACMRT -> Sadece bu dosyalar─▒ se├žin. Dosyalar─▒n tam listesi i├žin buraya bak─▒n

C..G -> Bu alandaki dosyalar

C ~ -> Commit C'deki dosyalar─▒ dahil et.

| xargs tar -rf myTarFile -> tar i├žin ├ž─▒kt─▒lar


6







Bir da─č─▒t─▒m beti─či i├žin buna ihtiyac─▒m vard─▒ ve yukar─▒da belirtilen yakla┼č─▒mlar─▒n hi├žbirini kullanamad─▒m. Bunun yerine farkl─▒ bir ├ž├Âz├╝m buldum:

 #!/bin/sh
[ $# -eq 2 ] || echo "USAGE $0 REPOSITORY DESTINATION" && exit 1
REPOSITORY=$1
DESTINATION=$2
TMPNAME="/tmp/$(basename $REPOSITORY).$$"
git clone $REPOSITORY $TMPNAME
rm -rf $TMPNAME/.git
mkdir -p $DESTINATION
cp -r $TMPNAME/* $DESTINATION
rm -rf $TMPNAME
 

4







Kolay yoldan, bu .bash_profile i┼člevinin bir i┼člevidir, mevcut konumdaki ar┼čivi do─črudan a├žar, ilk ├Ânce her zamanki [url: path] 'inizi yap─▒land─▒r─▒n. NOT: Bu fonksiyonla klonlama i┼člemini engellersiniz, do─črudan uzaktaki depodan al─▒r.

 gitss() {
    URL=[url:path]

    TMPFILE="`/bin/tempfile`"
    if [ "$1" = "" ]; then
        echo -e "Use: gitss repo [tree/commit]\n"
        return
    fi
    if [ "$2" = "" ]; then
        TREEISH="HEAD"
    else
        TREEISH="$2"
    fi
    echo "Getting $1/$TREEISH..."
    git archive --format=zip --remote=$URL/$1 $TREEISH > $TMPFILE && unzip $TMPFILE && echo -e "\nDone\n"
    rm $TMPFILE
}
 

.Gitconfig i├žin Alias, ayn─▒ konfig├╝rasyon gerekli (.git projelerinin i├žindeki komutu y├╝r├╝t├╝rken H─░ZMET ALIN, daha ├Ânce burada belirtildi─či gibi her zaman burada belirtilen ana dizine atlar , bu sabitlenene kadar ki┼čisel olarak fonksiyonu tercih ederim.

 ss = !env GIT_TMPFILE="`/bin/tempfile`" sh -c 'git archive --format=zip --remote=[url:path]/$1 $2 \ > $GIT_TMPFILE && unzip $GIT_TMPFILE && rm $GIT_TMPFILE' -
 

4


2010-03-19





Soruyu anlad─▒─č─▒m kadar─▒yla, yerel bir depodan bir devlet ├ž─▒karmak yerine (buradaki ├žok say─▒da anac─▒dan) bir devleti yerel bir veri havuzundan ├ž─▒karmak yerine, tarih├žeden ve di─čer dallar─▒n verileri olmadan, sunucudan yaln─▒zca belirli bir durumu indirmekle ilgilidir.

Bu b├Âyle yap─▒labilir:

 git clone -b someBranch --depth 1 --single-branch git://somewhere.com/repo.git \
&& rm -rf repo/.git/
 
  • --single-branch Git 1.7.10'dan (Nisan 2012) beri kullan─▒labilir.
  • --depth bildirildi (?) hatal─▒ oldu─čunu, ancak ihracat durumunda, belirtilen konular ├Ânemli olmamal─▒d─▒r.

4







@Aredridel'in g├Ânderisinin en yak─▒n oldu─čunu d├╝┼č├╝n├╝yorum , ama bundan biraz daha fazlas─▒ var - bu y├╝zden bunu buraya ekleyece─čim; Mesele ┼ču ki svn , e─čer bir repo alt klas├Âr├╝ndeyseniz ve

 /media/disk/repo_svn/subdir$ svn export . /media/disk2/repo_svn_B/subdir
 

daha sonra svn revizyon kontrol├╝ alt─▒ndaki t├╝m dosyalar─▒ d─▒┼ča aktaracakt─▒r (ayr─▒ca yeni eklenmi┼č olabilirlerdi ya da De─či┼čtirilmi┼č stat├╝leri var) - ve bu dizinde ba┼čka bir "├Ânemsiz" varsa (ve .svn burada alt klas├Ârleri saym─▒yorum ama .o dosyalar gibi g├Âr├╝n├╝r ┼čeyler var ) bu olacak de─čil ihra├ž edilecek; yaln─▒zca SVN deposu taraf─▒ndan kaydedilen dosyalar d─▒┼ča aktar─▒l─▒r. Benim i├žin bir g├╝zel bir ┼čey bu ihracat da var yerel de─či┼čikliklerle dosyalar─▒ i├žerir olmas─▒d─▒r de─čil hen├╝z i┼člendi─či; ve bir ba┼čka g├╝zel ┼čey, d─▒┼ča aktar─▒lan dosyalar─▒n zaman damgalar─▒n─▒n orijinalleriyle ayn─▒ olmas─▒d─▒r. Veya, svn help export koydu─ču gibi:

  1. PATH1 taraf─▒ndan belirtilen ├žal─▒┼čma kopyas─▒ndan temiz bir dizin a─čac─▒n─▒ verir, revizyonda REV ise (├çALI┼×MA durumunda, PATH2'ye verilir). ... REV belirtilmezse, t├╝m yerel de─či┼čiklikler korunur. S├╝r├╝m kontrol├╝ alt─▒nda olmayan dosyalar kopyalanmayacakt─▒r.

git Zaman damgalar─▒n─▒ korumayaca─č─▒n─▒n fark─▒na varmak i├žin, bu komutlar─▒n ├ž─▒kt─▒s─▒n─▒ kar┼č─▒la┼čt─▒r─▒n ( git se├žti─činiz bir repo alt klas├Âr├╝nde ):

 /media/disk/git_svn/subdir$ ls -la .
 

... ve:

 /media/disk/git_svn/subdir$ git archive --format=tar --prefix=junk/ HEAD | (tar -t -v --full-time -f -)
 

... ve ben, her durumda, git archive ar┼čivlenen dosyan─▒n t├╝m zaman damgalar─▒n─▒n ayn─▒ olmas─▒na neden oldu─čuna dikkat edin ! git help archive diyor:

git archive, bir a─ča├ž kimlik verildi─činde farkl─▒ bir kimlik veya etiket kimli─či verildi─činde farkl─▒ davran─▒r. ─░lk durumda, ┼čimdiki zaman, ar┼čivdeki her bir dosyan─▒n de─či┼čtirme zaman─▒ olarak kullan─▒l─▒r. ─░kinci durumda, ba┼čvurulan taahh├╝t nesnesine kaydedilen taahh├╝t s├╝resi yerine kullan─▒l─▒r.

... ancak g├Âr├╝n├╝┼če g├Âre her iki durumda da " her bir dosyan─▒n de─či┼čtirme zaman─▒n─▒" ayarla ; b├Âylelikle de─čil bu dosyalar─▒n ger├žek damgalar─▒n─▒ koruyarak!

B├Âylece, zaman damgalar─▒n─▒ da korumak i├žin, i┼čte bash biraz karma┼č─▒k olsa da, asl─▒nda bir "tek-astar" olan bir senaryo var - bu y├╝zden a┼ča─č─▒da birden ├žok sat─▒r halinde yay─▒nlanm─▒┼čt─▒r:

 /media/disk/git_svn/subdir$ git archive --format=tar master | (tar tf -) | (\
  DEST="/media/diskC/tmp/subdirB"; \
  CWD="$PWD"; \
  while read line; do \
    DN=$(dirname "$line"); BN=$(basename "$line"); \
    SRD="$CWD"; TGD="$DEST"; \
    if [ "$DN" != "." ]; then \
      SRD="$SRD/$DN" ; TGD="$TGD/$DN" ; \
      if [ ! -d "$TGD" ] ; then \
        CMD="mkdir \"$TGD\"; touch -r \"$SRD\" \"$TGD\""; \
        echo "$CMD"; \
        eval "$CMD"; \
      fi; \
    fi; \
    CMD="cp -a \"$SRD/$BN\" \"$TGD/\""; \
    echo "$CMD"; \
    eval "$CMD"; \
    done \
)
 

─░├žeri─či "current" dizininde (yukar─▒da /media/disk/git_svn/subdir ) d─▒┼ča aktard─▒─č─▒n─▒z varsay─▒ld─▒─č─▒n─▒ ve d─▒┼ča aktard─▒─č─▒n─▒z hedefin uygunsuz ┼čekilde yerle┼čtirildi─čini, ancak DEST ortam de─či┼čkeninde oldu─čunu unutmay─▒n. Bu komut dosyas─▒yla; DEST Yukar─▒daki beti─či ├žal─▒┼čt─▒rmadan ├Ânce dizini kendiniz olu┼čturmal─▒s─▒n─▒z .

Betik ├žal─▒┼čt─▒r─▒ld─▒ktan sonra, kar┼č─▒la┼čt─▒rmay─▒ yapabilmeniz gerekir:

 ls -la /media/disk/git_svn/subdir
ls -la /media/diskC/tmp/subdirB   # DEST
 

... ve umar─▒m ayn─▒ zaman damgalar─▒n─▒ g├Âr├╝rs├╝n├╝z (s├╝r├╝m kontrol├╝ alt─▒ndaki dosyalar i├žin).

Umar─▒m bu birine yard─▒mc─▒ olur,
┼×erefe!


3







Bu zamana kadar g├Ârd├╝─č├╝m en kolay yol (ve ayn─▒ zamanda pencerelerde de ├žal─▒┼č─▒yor) git bundle :

git bundle create /some/bundle/path.bundle --all

Daha fazla bilgi i├žin bu cevaba bak─▒n─▒z: Git depomuzu windows makinemden linux makineye usb s├╝r├╝c├╝ ile nas─▒l kopyalayabilirim?


3


2015-04-05





D─▒┼ča aktarma olu┼čturmak istedi─činiz makinenin deposunun yerel bir kopyas─▒na sahipseniz, i┼če yarayacak ba┼čka bir ├ž├Âz├╝m├╝m var. Bu durumda bu depo dizinine gidin ve bu komutu girin:

GIT_WORK_TREE=outputdirectory git checkout -f

Git deposuna sahip bir web sitesini y├Ânetiyorsan─▒z ve i├žinde temiz bir s├╝r├╝m sat─▒n almak istiyorsan─▒z, bu ├Âzellikle yararl─▒d─▒r /var/www/ . Bu durumda, bu komutu bir .git/hooks/post-receive komut dosyas─▒na ekleyin ( hooks/post-receive bu durumda daha uygun olan ├ž─▒plak bir depoda)


3


2018-02-23





├Ânek eklerken zip ar┼čivine git d─▒┼ča aktar─▒m─▒ (├Ârne─čin, dizin ad─▒):

 git archive master --prefix=directoryWithinZip/  --format=zip -o out.zip
 

3







E─čer alt mod├╝llere de ihtiyac─▒n─▒z varsa, bu i┼če yarayacakt─▒r: https://github.com/meitar/git-archive-all.sh/wiki


2







.bashrc dosyamda ┼ču yard─▒mc─▒ program i┼člevine sahibim: bir git deposundaki ge├žerli dal─▒n bir ar┼čivini olu┼čturur.

 function garchive()
{
  if [[ "x$1" == "x-h" || "x$1" == "x" ]]; then
    cat <<EOF
Usage: garchive <archive-name>
create zip archive of the current branch into <archive-name>
EOF
  else
    local oname=$1
    set -x
    local bname=$(git branch | grep -F "*" | sed -e 's#^*##')
    git archive --format zip --output ${oname} ${bname}
    set +x
  fi
}
 

1



─░lgili yay─▒nlar


Ge├žmi┼či olan bir SVN deposunu yeni bir Git deposuna nas─▒l ge├žiririm?

Git log svn log -v gibi dosya adlar─▒n─▒ g├Âsterme

Mevcut bir Git deposunu SVN'ye g├Ânderme

Hg: git rebase gibi bir rebase nas─▒l yap─▒l─▒r

"Git add", "git add", git commit "den ├Ânce veya sonra ne zaman ihtiyac─▒m olacak?

SVNÔÇÖde ├Âdeme ile ihracat aras─▒ndaki fark

Git g├╝nl├╝─č├╝n├╝ bir metin dosyas─▒na nas─▒l veririm?

Bir SVN deposunu ba┼čka bir SVN deposuna nas─▒l ge├žiririm?

NodeJS / Express'te ÔÇťmodule.exportsÔÇŁ ve ÔÇťexports.methodsÔÇŁ ne anlama geliyor?

ÔÇťSvn update -rÔÇŁ nin git e┼čde─čeri nedir?

Etiketle ilgili di─čer sorular [git]


Bir sayfay─▒ jQuery ile nas─▒l yenileyebilirim?

Git'in taahh├╝t├╝ndeki de─či┼čiklikleri nas─▒l g├Ârebilirim?

RecyclerView'deki ├Â─čeler aras─▒na b├Âl├╝c├╝ler ve bo┼čluklar nas─▒l eklenir?

PHP'deki tarih ve saati nas─▒l bulabilirim?

Javascript'te fonksiyon a┼č─▒r─▒ y├╝kleme - En iyi y├Ântemler

C# uzant─▒ ├Âzelliklerine sahip mi?

PHP kullanarak iki tarih aras─▒ndaki fark nas─▒l hesaplan─▒r?

Bir mod├╝l├╝n yolu nas─▒l al─▒n─▒r?

Git'teki etiketsiz de─či┼čikliklerden ÔÇťeski mod 100755 yeni mod 100644ÔÇŁ diyen dosyalar─▒ nas─▒l kald─▒rabilirim?

Git havuzunda bir dizini nas─▒l do─čru ┼čekilde yeniden adland─▒rabilirim?