What we removed in 4.0:
SQLite support (I like it but this database got locked
when several users use gitlab at once)
This is a pitty! I am sure there are many small teams where sqlite is totally sufficient.
Have you been able to measure and determine the problems with sqlite more precisely? It would be interesting to see at which point (number of concurrent users) the problems occur. Also it just reads like some data accessing backend is not properly closing connection / file access, so blocking might be just a bug, not a sqlite limitation.
I personally do like having such important infrastructure like bugtrackers as simple as possible, beeing able to setup anytime anywhere with sqlite backend is really a plus in changing environments.
One important solution is to switch from journal mode to WAL mode. Journal mode (the default) makes readers block writers and vice versa. WAL mode makes it so only writers block writers.
First of all, thanks a lot for the quick response.
Let me apologise in advance for complaining on an open-source project instead of trying to contribute.
Anyway, my personal feelings were that some of the dependencies could have been avoided (or perhaps set to some default value), at least for the community edition that I'm supposed to get up and running on an existing server machine.
Some examples:
* Requiring Python (for a Rails project!),
* Asking me to create special system users for the processes,
* Setting paths, keys and chmods manually (and not in some install.sh process),
* Configuring a database and access to it (this could easily use a default setting that pro users could edit manually).
From the comments around here, I realize that maybe I looked at the project in the wrong way and it should be installed either as a standalone service or as a virtual machine.
If that's the case, I think a short Readme or Install doc explaining that would be very helpful for most users.
Welcome to the world of server software. I think everything web app I've ever installed required database configuration. I take it you've never installed Wordpress? Or Roundcube? Textmate? Gallery? OpenPhoto?
I agree that other parts of the installation are annoying (python2 link, which isn't standard [1]), but the configuring a DB is very par for the course.
The special system users part annoyed me at first, but I realized I'm creating ssh access for git and so in that light it makes a lot of sense to create a new user. On the plus side, gitolite lets you have a ton of users that can use ssh to get the code without having a user account for each one, so it's a win over the long haul.
[1] On my Debian system (should also work with Ubuntu) I solved this with:
The thing is, I actually did install most of the software you mentioned, and most of them just ask you for some credentials and run the db initialisation and population themselves.
WordPress goes so far as to do that via a post-upload web interface, which is a superb UX IMHO, and something I remember writing into my own open-source PHP projects 10 years ago [1].
I really don't mean to disrespect but I think in the age of Rails and ORMs, these sort of tasks can be implemented even easier for the user and cleaner for the integrating apps.
That being said, I realise that GitLab relies heavily on some system-heavy dependencies (cough gitolite), and whoever wrote the installation guide is probably a system guy that didn't want to hide any of the details behind some automatic script.
I just suggest that this should be the "Installation for Advanced Users" doc that's the alternative to some automated process.
You're welcome, no problem that you are raising your opinion about the installation process, feedback will help make things better. The Phython dependency was there for a reason but I don't see it in the current installation doc so that is progress. The special users are due to using Gitolite, it is better to give it a separate unix user. The database requirement is needed unless you use SQlite, but support for this was dropped in 4.0 (and support for PostgreSQL made a lot better) because of the locking of SQlite. For sure GitLab is meant to run on a server and not on your development machine, did you get another impression from the readme description ('code hosting application')? What did you think it did?
I haven't tried running it on my development machine; last time I tried installing it, it was on the server we use at work to host our git repositories.
Since it was already a dedicated server machine (which we even use sometimes to host some small web apps), I thought I had my work cut out for me.
It was the amount of system work required (sudo-ing, chmod-ing, installing mysql because we only used postgres before, creating users) that made me give up eventually.
I want to give GitLab another try, so I'll see into using Vagrant for that.
But I still believe some install scripts would be very much appreciated and help the project gain popularity.
I think providing a Vagrantfile that would automate the building of an entire vm with all the dependencies installed and software configured would be a good idea, ESP since a typical git user is familiar with Vms and vagrant..
The GitLab website is opaque. I searched for, and did find 1) How to download the product 2) How much it costs 3) what hardware and OS it runs on or 4) how to find out more.
Now I've only been developing web apps since 1997, and work every single day with GitHub. Evidently I'm just stupid.
Oh, I actually tried to find those things twice. Yesterday, and again today.
Are you guys even aware of your website's usability issues? What's with the mystery navigation?
Edit: don't bother giving me links. Fix these serious problems.
GitLab.org got updated a few days ago, there is definitely room for improvement. But I don't get your points. 1) There is an installation guide button on the front page. This contains the clone source command under point 6. Just downloading something is not enough. 2) The tagline says 'Distributed under the MIT License', it's free! 3) First and second line of the installation guide refer to the hardware requirements, but I agree the website could be clearer on this. 4) What kind of 'more' are you looking for?
Having just visited the site, I think it's fine. Everything he's asked for is plainly available on the front page: "a free and open-source..." is right there in the text up top, and links to the source/installation guide are plainly available.
From a home user: well done on GitLab. I'm going to try out GitLab CI next, and see if I can replace my Bamboo server :).
I started to try to get things running at work. We use SLES at work, needless to say this has to be the most annoying product to setup ever.
Also the setup instructions have everything prefixed with sudo, why they don't just say sudo su - user and do the rest as that user is beyond me. Half of the setup could just be a few sh scripts.
I'm about halfway through the setup, but this project won't see a lot of adoption given its insane dependency hell and installation tedium.
Also the setup instructions have everything prefixed with sudo, why they don't just say sudo su - user and do the rest as that user is beyond me. Half of the setup could just be a few sh scripts.
In many of the more security-conscious organizations, `sudo` is preferred over `su` because it leaves an audit trail. They could automate parts of that and perhaps they should, but the way they have it now shows you exactly which parts of your system you are modifying. It's a tradeoff; if they didn't, they'd have people scolding them for the install scripts wreaking havoc on their production systems.
I'm well aware of sudo vs su. Where I work sudo ONLY allows you to run preapproved scripts or if you have permission the ability to su - someuser (- is necessary). Yes I'm an admin and can do "more", but not markedly.
In addition I have to type my password in each time I use sudo, also by policy thanks to things like PCI compliance.
You can show what parts of the system you are modifying, and provide scripts to automate it. They aren't mutually exclusive actions.
I found the installation process to be well described and installation went flawless. It seems like a long process but in the end, it's just because every little step from user creation to ruby installation is described in detail.
Every part of that process could be automated and reasonable defaults given. If someone made an install script this project would fly. It's incredibly boring to do it on your own and while the wiki is thorough and well-written, very few people want to sit through that just to play with it.
If you have it set in your mind you'll use it, then it's a good installation process as any. But if you're trying to evaluate options you might just end up saying "fuck it, I'll just use github", or something like gitorious.
The gitorious install script failed hard for me and left a lot of installed stuff on the system that I didn't know about. I actually prefer a detailed description of what to do over a magic script. However, I'd love to see packages for distributions - that way you can model depencies properly.
I think it would be a very good idea to make such scripts for other distros as well, and to test the living hell out of them. Your installation procedure is your biggest problem (just look at the size of the thread here), and you should fix it.
I've just spent the last 5 (five!) hours trying to setup GitLab, and I just don't get it to work. And I ain't no rookie either. This is the second time in about a year that I spent so much time trying to get this to work, and I'm about to give up on this project. I want this to work, and I want to use this, but this is insane.
I actually did a dist-upgrade from Lenny just to get this to work, and I made it through all the arcane steps (somehow) - but nothing. I can't get it to work. I can connect to GitLab, it redirects me to 'users/sign_in', and then it just crashes ('Killed', it says). Yup. Tough luck for me. That's five hours down the drain.
I'm sorry to hear your GitLab install didn't work out. I agree that right now the setup can be better. Just made a ticket to consolidate the install scripts, hopefully this helps making things work on multiple platforms. https://github.com/gitlabhq/gitlabhq/issues/2351
I'm opinionated on this since I'm running GitLab.com where you can use GitLab as a service.
GitHub has more features than GitLab. GitLab does have all the essentials to work as a team including merge requests and CI integration. Personally I think the GitLab interface is a bit less cluttered.
The main feature I'm missing is forks/pull-requests across repos. It's a nice way to keep strict control over the main repo while allowing others to commit code at their leisure. I must admit that this took me a little by suprise after installing GL.
This might be the push I need to install GitLab for my biz and site deployments, and bringing on contributors... until now, it seemed like too much hassle when I can simply pay $7/mo to use GitHub mini plan.
Github isn't just a list of features. It is also the community, expertise and maintaining uptime and availability, security, etc. I guess for so little money I don't know why I'd ever use this unless I was working at a bank or somewhere that was obsessed with security and self-hosting (and didn't realize github is better at this than they are).
Also, I have to admit it is a bit irritating that this is such a direct rip of github. The only real "feature" they're adding over github is getting everything github innovated without paying github.
There are some projects which legally can't be hosted on third party servers. Sometimes it's not about security but legal bindings. Even though they don't make sense, they do exist. There are also situations where you simply can't explain the benefits of Github to the decision maker.
Isn't this the same argument as saying that linux is a ripoff of unix without compensating the unix creators? Where would we be if we gave in to such notions?
I agree that it bothers me to see Gitlab UI looking too similar to GitHub. I’m hoping that GitHub would not pursue any action against it. I also agree that Gitlab can’t compete against GitHub in the areas you’ve listed.
For my company, however, Gitlab makes a lot of sense. We have a large number of small and close source client projects to manage. We don’t want to pay for file hosting, e.g. $50 a month for 50 repos, when each repo is tiny and we can easily and cheaply host them. GitHub Enterprise is also out of question, as it is not very affordable by a small company.
Cost factor aside, Gitlab does have advantages over GitHub. Legal requirement is one, and the ability to integrate with other tools in the company is also quite nice. Although this feature has not been implemented yet, I look forward to the ability for Gitlab to integrate with Jenkins and display build status.
I will continue to use GitHub for personal and open source projects. For client work, Gitlab will be the one I use.
I wouldn't throw out the phrase "so little money" so eagerly.
I'm a student with practically no income, and I have about 50 repositories for my school and weekend projects. To use GitHub, I would have to pay them $100/mo.
First of all, GitLab is awesome! However, I have to agree on making the installation steps easier. I was running GitLab 3.1 and followed the instructions on the official "From 3.1 to 4.0" update guide but when I checked GitLab's status at the end, there were several errors or uncomplete parts. Considering its a major release, I decided to reinstall everything from scratch instead of trying to manually fix everything displayed on the GitLab status check.
So it now supports both MySQL and Postgres, even though MySQL is preferred. Does anyone know what that means for a Postgres guy like me? Does "MySQL is preferred" mean that it has known bugs on Postgres? Is it usable?
Gitlab uses the idea of a notable to signify things that can be commented on. For git commits comments they store the git commit in the column which you need an explicit cast for in postgres
I think there is one other thing too. But this was when installed version 3 they may have changed this
Yes by default there are 4 different type of privileges per project that can be assigned to a user : guest, reporter, developer, master & owner. The list of what each is allowed to do can be found here : http://demo.gitlabhq.com/help/permissions
I've been looking at options for Git repos inside the firewall so happy to see this. Has anyone used Atlassian Stash too? How does it stack up vs GitLab? I've been using GitStack for a few months, which hasn't been bad for the basics.
Have you been able to measure and determine the problems with sqlite more precisely? It would be interesting to see at which point (number of concurrent users) the problems occur. Also it just reads like some data accessing backend is not properly closing connection / file access, so blocking might be just a bug, not a sqlite limitation.
Did you read http://www.sqlite.org/lockingv3.html ?
I personally do like having such important infrastructure like bugtrackers as simple as possible, beeing able to setup anytime anywhere with sqlite backend is really a plus in changing environments.