[responses inline]

On Fri, Aug 26, 2016 at 3:37 AM, Dr. Michael Bonert
<[email protected]> wrote:
> Are there any thoughts on managing updates of Mediawiki with git?
>

Personally I think its a great way to manage things. Always nice to
keep track of what's changed when running a site.

> I'm not a developer... but I have flirted with the idea a bit.  I program
> occasionally here and there-- though my day job is totally unrelated.
>
> I have played with git and I have a couple of Mediawiki installs
> that are running from installs via git.  I like that I can roll
> forward and roll back easily.
>
> Updates of the wiki in theory should be:
> ----
> pathofwiki# git checkout 1.26.4
> pathofwiki# php maintenance/update.php
> ----


Personally I prefer release branches over tags (e.g. git checkout
origin/REL1_26 ), although it doesn't matter much.


>
> What is opaque to me is the submodules.
>
> The skins, extensions and external libraries have to be updated with
> two or three commands... this is missing.  I think it stems from gaps in
> my knowledge about git.
>
>
> https://www.mediawiki.org/wiki/Download_from_Git#Download_an_extension
> suggests:
> ---
> cd path/to/extensions
> git pull
> git submodule update --init --recursive
> ---
>

This only applies if you had cloned the giant extensions.git
meta-repo, so it doesn't quite apply to what you had described
previously where you only had the 1.26.4 tag checked out.

> ---
> If I try the above I get...
> cd path/to/extensions
> # git pull
> You are not currently on a branch. Please specify which
> branch you want to merge with. See git-pull(1) for details.
>
>     git pull <remote> <branch>
>
> ---
> Branch info
> # git branch
> * (detached from 1.26.4)
>   master
>
> ---
> # git submodule update --init --recursive
> seems to do nothing
>
>
> Can someone enlighten me on this or point me to something like
> "git for amateurs"?
>
> Thanks in Advance,
> Michael


So for the release tags (or release branches), they only include core
mediawiki. There's two separate ways to include the other stuff.

As separate git repos:

So for installing:
(Assuming you've already cloned mediawiki)
$ git checkout origin/REL1_26
(If you don't already have composer, you need to install it. Sometimes
it will be named composer.phar instead of composer)
$ composer install
(Note: If you don't like composer, you can do a git clone of
mediawiki/vendor.git instead. Just make sure you have the appropriate
branch for your version)
$ cd extensions
$ git clone <extension I want> -b REL1_26
$ git clone <2nd extension I want> -b REL1_26
...
$ cd ../skins
$ git clone <skin I want> -b REL1_26
...

Then to update versions you'd do something like:
$ git pull
$ git checkout origin/REL1_27
$ composer update
$ cd extensions
( and for each extension)
$ git pull
$ git checkout origin/REL1_27
(and ditto for skins)
$ cd ../maintenance
$ php update.php

This is slightly simpler than submodules, but the downside is all the
components are separate - each skin/extension is separate repo

The submodule system is basically you start off with a checkout of
origin/REL1_26, then make your own branch. Then instead of git clone
for the extensions you want, you do git submodule add <path to git
repo> -b REL1_26. And then git commit your submodule additions in the
main git repo. Keep in mind that any time you update a submodule you
also have to make a commit in the main git module too. The benefit of
using submodules is you can then easily having a testing server and a
real server where you make some changes on the testing server, and it
only takes 2 commands ( git pull && git submodule update ) to transfer
your changes from the testing server to the production server.

--
bawolff

_______________________________________________
MediaWiki-l mailing list
To unsubscribe, go to:
https://lists.wikimedia.org/mailman/listinfo/mediawiki-l

Reply via email to