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

  • Eddie Bravo

    Eddie Bravo

    17 EKİM 2006
  • listedabive

    listedabive

    30 Ocak 2007
  • psidot

    psidot

    2 Kasım 2006