Installation and update from git

Since the beginning of ownCloud, I’m using an installation done from git repositories.

Git is a fantastic upgrade tool. It can tells you what have changed before upgrading, but above of this, it can also keep your local changes as-is, on top of new changes.
Every web application I’ve installed is done from git, when the source is available in this format.

I totally understand that the release process involves a black magic box that mix every file into a single ZIP file, but is there any plan for at least permit such an installation, or better, support it?

1 Like

One problem is that you have lots of testing code in git. That’s something you don’t want in production.

I don’t know how the code is organized, but usually, test code is separated from business code, at least in different directories. So protecting (or deleting) test directories should be done to overcome that issue.

Yes, but then your repo is not in sync with upstream any more and you lose the advantage of using git.

For nginx it’s not a problem having test code in the webroot. Aside from being a bit messy, the update convenience of a git based install is worth the extra messiness, and besides that, my updatenotification app in Admin defaults to a git update channel so it seems a live-from Github install is supported by the frontend.

  location ~ ^/(build|tests|config|lib|3rdparty|templates|data)/ {
    deny all;
  }

I am using git also for retrieving updates . My local branch is checkout to stable versie of Nextcloud. I don’t like wget and unzip projects because is fault sensitive.

Here is another example. I followed this pull request at https://github.com/nextcloud/server/pull/3696
I’ve applied the patch. And now, I am completely unable to tell if the patch is still applied, or to upgrade the core without losing the patch.
I still think that an installation from git is more than useful.

Maybe it can be a good idea to have a repository dedicated to releases, with only tagged version in it, in order to upgrade? This give the ability for release scripts to remove test/dev code and push only production code in this repository.

You have the stable-branches where it is less experimental. However there is no full testing after each patch is merged. Can’t you use the tagged releases?

It seems that some files are not included in the tagged release of the core module. But maybe I am wrong, or something have changed since the beginning of this topic!