Como eu adiciono / upgrade / downgrade de um projeto Git remoto no meu repositório sem usar submódulos?

Eu preciso manter uma cópia do WordPress no repositório Git do meu projeto.

Eu quero usar o Git para baixar as atualizações do WordPress do GitHub e, em seguida, enviar essas atualizações viagit push e / ougit svn dcommit.

Eu atualmente tenho uma solução em vigor usando submodules Git, e funciona; mas agora preciso implantar meu projeto mais recente em um servidor que suporta apenas o SVN e ao qual não tenho acesso direto. Portanto, os submódulos estão fora.

Eu fiz uma tonelada de leitura sobreEstratégia de fusão da subárvore do Gite eu acho que é a solução certa; mas tudo que eu li espera que eu queira seguir uma ramificação remota e sempre puxar para baixo seu código mais recente.

Pelo contrário,WordPress no GitHub usa suamaster filial - na verdade, todos os seus ramos - para o desenvolvimento; lançamentos são marcados, mas é isso. Oficialmente falando, todos os ramos estão em um estado alfa perpétuo.

Eu acho que o que eu preciso descobrir é como subtrair mesclar umtag.

Agora, estou fazendo isso para ler o WordPress 3.5 emwebroot/wordpress (e para namespace tags WordPress), e funciona:

$ git remote add -t master --no-tags wordpress git://github.com/WordPress/WordPress.git
$ git config --add remote.wordpress.fetch +refs/tags/*:refs/tags/wordpress/*
$ git fetch wordpress
warning: no common commits
remote: Counting objects: 138547, done.
remote: Compressing objects: 100% (28297/28297), done.
remote: Total 138547 (delta 110613), reused 137367 (delta 109624)
Receiving objects: 100% (138547/138547), 46.05 MiB | 2.26 MiB/s, done.
Resolving deltas: 100% (110613/110613), done.
From git://github.com/WordPress/WordPress
 * [new branch]      master     -> wordpress/master
 * [new tag]         1.5        -> wordpress/1.5
...
 * [new tag]         3.5        -> wordpress/3.5
 * [new tag]         3.5.1      -> wordpress/3.5.1
$ git read-tree --prefix=webroot/wordpress/ -u wordpress/3.5
$ git commit -m "Added WordPress 3.5 at webroot/wordpress"
[master c483104] Added WordPress 3.5 at webroot/wordpress
 1061 files changed, 269102 insertions(+)
 create mode 100644 webroot/wordpress/index.php
 create mode 100644 webroot/wordpress/license.txt
 create mode 100644 webroot/wordpress/readme.html
...

Não importa o que eu tente, porém, não consigo descobrir como usar a mesclagem da subárvore para atualizar isso com o WordPress 3.5.1.

Tentandomerge eread-tree, conformeistonão funciona:

$ git merge -s ours --squash --no-commit wordpress/3.5.1
Squash commit -- not updating HEAD
Automatic merge went well; stopped before committing as requested
$ git read-tree --prefix=webroot/wordpress/ -u wordpress/3.5.1
error: Entry 'webroot/wordpress/index.php' overlaps with 'webroot/wordpress/index.php'.  Cannot bind.

Tentando uma mesclagem de subárvore falhar:

$ git merge -s subtree --squash --no-commit wordpress/3.5.1
warning: Cannot merge binary files: webroot/wordpress/wp-includes/js/tinymce/wp-tinymce.js.gz (HEAD vs. wordpress/3.5.1)
...
Squash commit -- not updating HEAD
Automatic merge failed; fix conflicts and then commit the result.

(git pull -s subtree --squash --no-commit wordpress 3.5.1 falha da mesma maneira.)

Eu tentei adicionar-Xtheirs paragit merge, Eu tentei uma recursivamerge com-XsubtreeEu tentei todas as combinações de ramificações temporárias e mesclagens de subárvores que eu posso descobrir - mas não consigo quebrar isso.

Alguma ideia? Ou devo apenas desistir e baixar (e baixar novamente, e baixar novamente) WordPress a maneira antiga?

questionAnswers(1)

yourAnswerToTheQuestion