From 4709364b7e1cfdb2bf5e0c51a7025a3154014d12 Mon Sep 17 00:00:00 2001 From: Achilleas Pipinellis Date: Mon, 30 Dec 2013 01:25:28 +0200 Subject: [PATCH 1/4] Refer to bundler's ability of parallel installation --- doc/install/installation.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/install/installation.md b/doc/install/installation.md index addb21b50e0..0fc6310b5e1 100644 --- a/doc/install/installation.md +++ b/doc/install/installation.md @@ -253,6 +253,13 @@ Make sure to edit both `gitlab.yml` and `unicorn.rb` to match your setup. ## Install Gems +**Note:** As of bundler 1.5.2, you can invoke `bundle install -jN` +(where `N` the number of your processor cores) and enjoy the parallel gems installation with measurable +difference in completion time (~60% faster). Check the number of your cores with `nproc`. +For more information check this [post](http://robots.thoughtbot.com/parallel-gem-installing-using-bundler). +First make sure you have bundler >= 1.5.2 (run `bundle -v`) as it addresses some [issues](https://devcenter.heroku.com/changelog-items/411) +that were [fixed](https://github.com/bundler/bundler/pull/2817) in 1.5.2. + cd /home/git/gitlab # For PostgreSQL (note, the option says "without ... mysql") From 5b4aba5f56e6d5c934300707c99dd70916c1a59e Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Sun, 30 Mar 2014 22:45:28 -0400 Subject: [PATCH 2/4] Make sure important directories exist in git Ensures the following directories exist after a git clone: - public/uploads - tmp/pids - tmp/sockets --- public/uploads/.gitkeep | 0 tmp/pids/.gitkeep | 0 tmp/sockets/.gitkeep | 0 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 public/uploads/.gitkeep create mode 100644 tmp/pids/.gitkeep create mode 100644 tmp/sockets/.gitkeep diff --git a/public/uploads/.gitkeep b/public/uploads/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tmp/pids/.gitkeep b/tmp/pids/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tmp/sockets/.gitkeep b/tmp/sockets/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d From 34c5e6de28aabbf1894d24ed5838f33e068c0c8d Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Sun, 30 Mar 2014 22:58:03 -0400 Subject: [PATCH 3/4] Remove Install doc notes about creating certain folders --- doc/install/installation.md | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/doc/install/installation.md b/doc/install/installation.md index addb21b50e0..5ea2329dead 100644 --- a/doc/install/installation.md +++ b/doc/install/installation.md @@ -197,20 +197,17 @@ You can change `6-6-stable` to `master` if you want the *bleeding edge* version, # Make sure GitLab can write to the log/ and tmp/ directories sudo chown -R git log/ sudo chown -R git tmp/ - sudo chmod -R u+rwX log/ - sudo chmod -R u+rwX tmp/ + sudo chmod -R u+rwX log/ + sudo chmod -R u+rwX tmp/ # Create directory for satellites sudo -u git -H mkdir /home/git/gitlab-satellites - # Create directories for sockets/pids and make sure GitLab can write to them - sudo -u git -H mkdir tmp/pids/ - sudo -u git -H mkdir tmp/sockets/ - sudo chmod -R u+rwX tmp/pids/ - sudo chmod -R u+rwX tmp/sockets/ + # Make sure GitLab can write to the tmp/pids/ and tmp/sockets/ directories + sudo chmod -R u+rwX tmp/pids/ + sudo chmod -R u+rwX tmp/sockets/ - # Create public/uploads directory otherwise backup will fail - sudo -u git -H mkdir public/uploads + # Make sure GitLab can write to the public/uploads/ directory sudo chmod -R u+rwX public/uploads # Copy the example Unicorn config From 8c7f4f2bba7c14a632864ab1362d2eb7051f7fdf Mon Sep 17 00:00:00 2001 From: Yang Li Date: Sat, 5 Apr 2014 11:13:38 +0800 Subject: [PATCH 4/4] Add icon for iOS home screen --- public/apple-touch-icon.png | Bin 0 -> 11979 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 public/apple-touch-icon.png diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6f2e0dd090ff597a7261de7b8b7d403a92691a51 GIT binary patch literal 11979 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