consolida arquivos CMS em um só lugar

1

Temos um sistema em que usamos um CMS sob medida em um de nossos servidores. Este CMS é usado por 30 a 40 clientes. A maioria dos arquivos para cada cliente CMS é a mesma (com exceção de algumas pastas), pois a cada vez que adicionamos um novo recurso / patch / correção de bug, nós o disponibilizamos para todos os clientes. Queremos consolidar esses arquivos em um único local para que possamos implantar nossas alterações no SVN com mais facilidade.

temos uma estrutura como essa para cada conta de usuário:

/home/user/public_html/css/
                      /images/
                      /admin/
                      index.php
                      etc ....

Neste exemplo, as pastas css e images seriam exclusivas para cada site do cliente, mas todos os outros arquivos seriam comuns a todos. Não tenho certeza se deveríamos estar olhando para symlinks / NFS / outra coisa?

    
por robjmills 29.10.2009 / 11:13

2 respostas

2

Solução de curto prazo:

Mover

/admin/ 
index.php
etc...

para, digamos, /opt/cms

Crie links sym para os arquivos para o novo local. ou seja:

$ ln -s /home/user/admin /opt/cms/admin
$ ln -s /home/user/index.php /opt/cms/index.php

Escrever um script para fazer o acima para todos os arquivos e todo o usuário deve ser trivial (com experiência). Se não, poste uma questão separada.

Em seguida, use o SVN no diretório / opt / cms, que é vinculado por todos.

Solução a longo prazo:

Elimine completamente os diretórios do usuário. Mova o aplicativo para um único local do site (/ opt / cms ou / var / www / cms, etc ...). Use algum tipo de reescrita de URL para tornar example.com/~user/images/* apontar para example/user/images/* e criar um diretório /opt/cms/user/images para cada usuário. Esta solução significa que o usuário não sabe que algo mudou.

A longo prazo, reescreva o CMS para armazenar a diferença nos bastidores, ou crie uma nova estrutura e forneça aos usuários uma nova URL.

    
por 29.10.2009 / 20:57
0

Eu não estou familiarizado com o layout do arquivo do Bespoke, mas você pensou em fazer isso através da propriedade svn: externals?

Permite-lhe ligar um repositório 'externo' a uma localização dentro do seu repositório atual. Ao ter um repositório central onde o Bespoke mora (privado para a sua organização, ou o repositório público, se ele oferecer um) vinculado a todos os repositórios do seu projeto, ele fará com que as coisas rolem com o SVN num piscar de olhos.

Quando você executa svn update ou svn commit dentro de um local em seus repositórios, as alterações serão puxadas ou colocadas nos repositórios externos e manterão tudo sincronizado.

svn: externals só suporta pastas anteriores à versão 1.5, então certifique-se de estar na versão 1.6 ou superior para poder vincular coisas como o index.php ao seu projeto corretamente (a menos que arquivos sob medida possam ser colocados em um único diretório) .

    
por 29.10.2009 / 11:58