SORU
2 EYLÜL 2009, ÇARŞAMBA


Nasıl bir git repo (klon değil) dosyaları, tarihi koruma taşımak için

Git bizim depoları bireysel projeler gibi kendi ağaç vardı, tek canavar svn depo bölümleri olarak başladı:

project1/branches
        /tags
        /trunk
project2/branches
        /tags
        /trunk

Belli ki, oldukça kolay birinden diğerine dosya taşımak için 'svn mv'. Git, her proje kendi deposundaki ve bugün project1 project2 bir alt dizine taşımak istendi. Böyle bir şey yaptım:

$ git clone project2 
$ cd project2
$ git filter-branch --subdirectory-filter deeply/buried/java/source/directory/A -- --all
$ git remote rm origin  # so I don't accidentally the repo ;-)
$ mkdir -p deeply/buried/different/java/source/directory/B
$ for f in *.java; do 
>  git mv $f deeply/buried/different/java/source/directory/B
>  done
$ git commit -m "moved files to new subdirectory"
$ cd ..
$ git clone project1
$ cd project1
$ git remote add p2 ../project2
$ git fetch p2
$ git branch p2 remotes/p2/master
$ git merge p2 
$ git remote rm p2
$ git push

Ama bu oldukça karmaşık görünüyor. Daha iyi bir yol genel olarak bu tür bir şey yapmak var mı? Ya da doğru bir yaklaşım benimsedik?

CEVAP
11 Temmuz 2012, ÇARŞAMBA


Eğer geçmişinizi aklı başında ise, taahhüt olarak yama ve yeni depo içinde uygulayabilirsiniz:

cd repository
git log --pretty=email --patch-with-stat --reverse --full-index --binary -- path/to/file_or_folder > patch
cd ../another_repository
git am < ../repository/patch 

Ya da bir satır

git log --pretty=email --patch-with-stat --reverse -- path/to/file_or_folder | (cd /path/to/new_repository && git am)

(Exherbo’s docs alınan)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • fast2hell

    fast2hell

    16 AĞUSTOS 2006
  • How to Cook ?

    How to Cook

    31 Ocak 2007
  • kalabrandmusic

    kalabrandmus

    25 Kasım 2009