Alternatives to Git? [closed] - version-control

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
Is there any version control software with the functionality of Git, but which is not under a viral license? - A "viral license" being, by my definition, one which requires derived software to be under the same or an equally-restrictive license.
I'm not interested in an argument on or discussion about the GPL; it's outside the scope of this question and website.
Thanks.

Fossil is (and Codeville was) a BSD-licensed distributed revision control system.
Note that unless you're actually modifying the version control software itself, the license doesn't affect you; you're free to develop non-GPL'ed software using a GPL'ed tool to manage revisions.

The other options are :
Perforce
Bazaar
SVN
CVS

UPDATE:
Since 2 years passed since started professionally working with git (after 20 years of not-git...) I can say this:
GIT has it's advantages when it comes to merging code bases between branches and multiple users. Once you master it, and learn to ignore its - sometimes utterly confusing command line UI - can be easy to work with.
On the downside, GIT IS complex to understand and LEARN. There is a long steep learning phase, especially if you work from the command line in multiply branched repository (the common and the recommended approach). Working with UI tools like InteliJ IDE's can hide some of the details, but these require their learning attention and time too + some not so basic GIT knowledge. And this knowledge is required by ALL members of your team.
OLD AND (not so) BELOVED ANSWER:
Forget the license... You want to NOT use GIT for so many other reasons...
If you want things to work faster for your team - stay away from GIT. Why not use SVN? It is supported by any service that supports GIT, and is the most popular alternative to GIT (as far as I know).
To commit/merge/manage a team in GIT it'll take you exponentially more time than other SVN/Fossil/... All in the name of advance "distributed" design, and a rich set of methods to kill your code, merge it wrongly, give you so many options to do horrible mistakes (that happen to pro's and newbies alike), and do simple things the HARD HARD way. Were in reality it only serves the ritual hungry souls of geeky programmers, who would otherwise have to go home late and face the empty walls of their houses... (poetic answer too).
REALLY - It would actually be funny if it wasn't the number one pain-in-the-arse time killer in the office. And once you go GIT you can never go back, so my advice, don't let the geeks have it. Keep it out or pay the price.
And, yeah, I know the crowd here, and I am more than willing to loose a few points. It's not like it means anything real.

Related

Game development with multiple people in Unity3D: How could we work on the same project simultaneously? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
First of all, we're all beginners, so I am really sorry if this is a trivial question.
We're developing a game in Unity3D. We have two programmers, and one artist. We'd like to make our life easier by not just simply communicating via Facebook and sending our stuff back and forth. I know about GitHub, but I have a couple of problems with it.
It's not free for closed source projects - which would be ideal. Is there an alternative? Is this even the right kind of site to use?
Stupid reason, but I just can't comprehend how it works/how to use it. Is there an easy tutorial for it or something?
Is it even 'compatible' with Unity3D? Since I don't really know how
GitHub works, this might also be a really stupid question.
First of all you can use Bitbucket to host your stuff. Its like github without the open source community.I'm using it on a similar project I'm working on with some guys. It's important you understand that git is version control software developed by Linus Torvalds (creator of the Linux kernel). Git can be used to "commit" changes to a project. Then your other coder could grab those code(script in unity?) files and load them into him project. It is kind of overwhelming to learn to use at first, but it gets easy once you get it. Really learning to use git is one of the best things you can do for yourself.
As far as using git goes, I use linux so I can just 'man git' to look at commands and then use said commands in the shell. Mac uses bash so it probably is run right from the shell there too. Honestly I don't know at all for windows.
Here are a couple of resources:
https://try.github.io/levels/1/challenges/1
https://www.youtube.com/watch?v=TI3yVcSahzk
If I had more time I would look for a really good one for you, but I'm going to be late for work!
I have developed some Unity3D projects using GitHub before. So to answer question 3 and the last part of 1 first, yes Unity projects use a file-system architecture that is perfectly compatible with GitHub and once your used to it it is a great tool for team development.
Answer for question 1:
GitHub is just a name brand for a centralized version control system and there are other brands out there with similar offerings such as bit bucket. Google this term for more info. also look into distributed version control as well.
In all honesty though, if your new to developing, the product you will be making will most likely not be of much interest to other people on GitHub and your public repository will probably go unnoticed. If you believe that what you are creating is of such great value it needs to be kept secret, then investing a few dollars a month in a premium service is recommended anyway.
For other options, one would be to set up a central Git repository on a server (or one of your home computers) that you or one of you project mates is running. This might be a more complicated method but you would learn a lot of other useful things along the way.
Answer for question 2:
See -https://guides.github.com/activities/hello-world/- for github's intro tutorial. Also Youtube has some decent offering if you search for how to use Git Hub.
It can be a little daunting to work with something new and attempt to understand the documentation. If you are planning on getting serious about development though, especially in a corporate setting, you need to learn GIT and practice reading and understanding documentation.
Good Luck!
I recommend git for just about any text-based version control. If the files are binary heavy, it still works but it's not git's strength.
Until you get the central hosting worked out, you can use git bundle to share the changes offline.

Looking for a version control system that supports standard development and customer specific development [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
At our company we've built a data integration tool that we have sold to several customers. Most of the customers have distinct requirements. We implemented these customer-specific extensions by using a self-made mechanism based on inheritance (so every installation knows which classes to load and which not). But all this customer-specific code is still in the same codebase as the standard code.
Now, this is no longer possible for several reasons (codebase getting ugly and large, clashing requirements, etc.)
For this reason we have decided to separate the codebases: one for the standard product, and several customer-specific codebases.
I am now trying to find a version control system that supports this approach. Here's my wishlist:
support for several "standard" codebases for different releases
1.0 release
1.1 release
2.0 beta/development
support for multiple "customer" codebases
ability to create a customer codebase by cloning a standard codebase
ability to change standard code in a customer codebase
ability to update a customer codebase with a new standard release (and somehow marking the conflicts that come from changed standard code in the customer codebase)
As our team is still very small (~4 programmers), it should also be easy to handle by the developers themselves.
Btw, our software is built using Spring with STS (so, an Eclipse plugin would be great too).
All VCS that I have researched so far seem to have that target of building one piece of software - not several. I am hoping for some suggestions or best-practice approches.
Simply
Simply get git, go for pull request process and take advantage of some GUI, supporting this workflow.
Are releases much different form custom development?
To clarify, what is the situation you are facing: "standard" development comes in versions, they might live independent for maintenance, you may need to get some fixes from new versions to be incorporated in older releases, you need a way to solve hotfixes.
All these things are well solved by distributed version control systems like git, hg or others. I have started with hg, but later found, git is used more often and in standard installation offers all what is need (what is not a case for some hg features).
Regarding custom development - in fact, they do not differ conceptually much from standard versions - you just need another modification of your program being identified under unique name, which will eventually denote, these are custom things.
Branching or pull request process?
Now how to approach different "swim-lines" for different versions and custom developments?
Branching workflow models
Obvious answer is "branching". There is a lot of tutorials on various branching models and they shall be solving your problem.
However, branching is not trivial either and you may find long disputes on what style is the best one.
Topical repos and pull request workflow
Fortunately, there are even simpler solutions - Pieter Hintjens article http://hintjens.com/blog:24 about "Branching considered harmful" provides simpler model, using topical repositories and pull request process. This is how many projects on GitHub and BitBucket are managed and I found this really the most effective solution with minimal risks.
Final recommendations
For pull request working process, it is handy to have some GUI, which supports related communication - and apart form GitHub and BitBucket, there are solutions on the market (incl. some open source solutions).
Prepare yourself for long run - starting with linked article by Pieter Hintjens may make your run a bit shorter, next step could be playing with a project on BitBucket or so, then design "the final" system (which will anyway evolve during time, but git repos are well suited to keep with the changes).

Collaborative Code Editing [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
I work for a small web development company (6 people) and we've been in the market for a new code editor/development environment for quite some time.
Currently, we're using Dreamweaver's (CS3) coding side for our site development. Each site's files is hosted on a Dreamhost ftp server. All 6 of us work on the same set of live files on the remote ftp server. Dreamweaver has a handy file locking functionality that prevents us from overwriting each others changes by keeping us out of the same files.
Now, we've found that this form of development allows for very rapid development and love how easy it is to get things done. However there are many things we don't like. One of which is Dreamweaver's code editor. We also don't like our lack of code history for each site.
Does anyone know of a good alternative to Dreamweaver that has similar file locking/ftp functionality?
If not, could you explain to me the best configuration of a source control system for our team? We're willing to look at GIT, Mercurial, and Subversion. The new system would ideally:
1). Support multiple different code editors on different operating systems. (Windows 1st choice.)
2). Be almost as easy and quick to push out code as currently.
3). Allow for working on the files outside of the office network.
4). Be inexpensive.
I'm probably just showing my ignorance of how to use a version control system, but it doesn't seem logical for each of us to have a testing server on our computers with every single site setup with our own test database... That's very time consuming
What's your solution to our problem? I think we'll either have to upgrade to the latest version of Dreamweaver and stick with it forever, or we'll have to find some sort of ftp collaborative editor, or we'll have to implement version control.
Do the benefits of version control outweigh the extra amount of time it entails to push out code?
it doesn't seem logical for each of us
to have a testing server on our
computers with every single site setup
with our own test database... That's
very time consuming
That's generally the way to do it. Most modern frameworks will let you set up your development server in minutes, if not seconds -- using an embedded http server and database, for example. If you are stuck on an ancient platform, there are solutions like wamp that are only a little more difficult. Remember, that it's time that you spend once, but it lets you be faster. If the project is going to take any longer than a few hours, it should be beneficial. You don't waste time on debugging things your fellow developer just changed, or recovering production data from that silly database manipulation mistake you just made.
(Oh, and if your websites are just HTML+JavaScript, then you don't need any server locally, obviously.)
As for version control systems, the ones you mentioned are fine, with SVN requiring a little more setup and network access to the central server for commits. Git and Mercurial let you work and commit offline, and then push your changes to the central server or even just exchange them between developers. I think Mercurial works better on Windows at the moment.
Michael I hear your pain.
I can't claim to have fully researched all avenues, but I have really begun to love Git recently.
My first hurdle was learning about how Revision Control Systems (RCS) work. Before I would pick SVN vs Git vs HG vs Bazzar vs etc I evaluated what I wanted to do. And that was to work locally then share my work, and push to a webserver.
I found this great comparison website: http://whygitisbetterthanx.com
From that I could clearly see that Git was worth the time to learn. As the backwards learner I am I dove into a project and learned how quickly things could become messy, then I began reading: http://gitready.com/ and http://book.git-scm.com/ and http://progit.org/book/
Then I realized I needed an organizational strategy. I went searching and found something I (and a lot of others) liked: http://nvie.com/posts/a-successful-git-branching-model/
This is also a great resource:
http://danielmiessler.com/study/git/
There's a bit of a primer. Let me try to answer your questions more directly.
1.) Git is a command-line tool. For windows there's cygwin.
I found the documentation at github to be the best. Even if you don't plan on using them for code hosting. Have a look at http://help.github.com/ Use the setup git link to get started.
2.) Since you ask for versioning there is a bit more work. Its a different model, a different way of thinking. Rather than not be able to edit the file which is currently what happens, your commits might collide, and in that case git provides great diff tools to help resolve the conflict.
3.) Git is whats called a DCVS or distributed version control system. Here's an example:
lets say you need to do some work over the weekend. You do a git pull from the server before you leave work. At home you can continue to work, create new branches etc. Then when you have an internet connection you can push your changes back to the server.
4.) Git is free!
As for pushing your work to the webserver you'll need to setup something like this:
http://toroid.org/ams/git-website-howto
Looks pretty easy, I'm gonna try it out next weekend.
I hope you find some of what I wrote helpful, if not maybe the links are.

How important is version control integration with your bug tracking software [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
Currently we use FogBugz for tracking issues and found it to be ok. I'm looking for something else that can allow end users the ability to track their cases along with us. And something that actually works well with email. I've found a few alternatives that support those features but they don't integrate with version control. We've got all the SVN hooks in fog bugz and we use them - but I haven't really found them all that useful. Has anyone found a really good reason to need version control integration with the bug trackers?
Clearly, this kind of integration is not something that is essential to the operation of the software. With a bit of discipline every check-in can be accompanied with a bug number manually, and every bug resolution can manually have a version control tag added to it.
All else being equal however, I personally will always prefer automation over 'discipline of the users', because the latter will always sooner or later let you down from time to time. Not because the users are malicious or incompetent, but simply because people cannot be 100% alert all of the time.
I find the integration of SVN with TRAC very helpful. Through SVN hooks, commits to the repository with a ticket number insert a comment on the ticket with a link to a nice visual HTML representation of the revision number, showing inserts, deletes, and diffs.
As a supervisor over a small team of programmers, I find this as a helpful tool for me to do code reviews, so I can verify that the commit truly addresses the associated issue. I wouldn't exactly call this integration essential, but it was a nice free extra on my issue tracker that I've grown to love.
It is absolutely critical for us.
Here is a typical commit log for one of our projects (sample):
Make sure filedes is cleared in child list prior to reallocating
When p->child-filedes is > 0, the child list is active and can not
be collected.
[ Impact: Closes bug 123457 ]
Note the [ Impact: ] line, which could also be "Relates-To", "Caused" or any number of other things.
This lets us use simple greps and automated scripts allowing the person committing to automatically close, or even re-open a bug.
Though we typically use Git and Mercurial, these sort of hooks would work on (almost) any VCS, especially proprietary ones that do not feature some modular plug-in that you need.
If you think of your bug system as just another part of your VCS, its really easy to see how they depend upon each-other.
Other stuff, such as fetching patches submitted with bugs is possible, too.
It is a question about your code size, and how many bugs you need to track.
And it is also really useful for non coders in the organisation i.e. managers and customer support. They can find answers to questions like "When and where was this bug fixed"...
I think it's helpful to distinguish between bugs found internal to the development organization, e.g. from peer code review, versus bugs found by a test group that is external to the development organization.
The (small) benefit to coordinating version control with bugs found by an external test group would be for historical reference.
The larger benefit is in coordinating bugs found via peer code review with version control -- by doing so you can certify that all code is peer review bug free before releasing it to external test groups; a common requirement.
FYI, Code Collaborator from SmartBear, Inc. handles this nicely.
I have found version control integration to be extremely helpful in maintaining and managing multiple versions (stable, development trunk, etc.) of a project.
Using the version control integration and a bit of discipline from coders to reference bug tickets in commits (or some pre-commit hooks to forcibly require ticket references) has allowed us to quickly and easily generate lists of changesets that are required to fix any given bug. This is instrumental when merging the fixes into various stable branches of the code.
It's not a necessity, but it certainly makes life easier for release management.
I've used SVN + Trac and Atlassian's Jira product with Fisheye SVN plugin and have found both tools to be very good. Trac seems to be a bit simpler, but very easy to use. Jira, in my opinion, had a nicer look and feel and quite a few more bells and whistles, but was almost too much at times.

How can I organize all my code, data, scripts, tasks etc? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
What tools or approaches would you recommend to a 'one-man team' to keep organized?
I'm doing research that involves a lot of coding, writing hundreds of throw-away perl scripts, C++ binaries that get used until I find some better approach, large amounts of data that gets preprocessed in different ways, where some new preprocessing makes the old way obsolete -- until I find out that the old way was actually better, and so on. My work is inherently a moving target, as I have to try many things out, and often none of it is perfect.
It's not a completely chaotic situation, but it's also far from perfect. Are there general approaches that you would recommend in such a situation? I do use SVN for my code, although not for the different versions of the data because that gets too big. It's hard to keep track of all the scripts and binaries, so I always comment them, write down how I ran them etc. But I'm curious if you have some additional ideas.
(I work on a linux system.)
I'm using a wiki (TiddlyWiki in my case, as that runs absolutely anywhere - all it needs is a browser with JavaScript) as my "engineers notebook". Almost anything goes in there - lists of questions (and later on their answers), procedures (steps by step instructions), notes of what I put where (might work for your "data"), phone numbers (easy to find with a full text search), anything goes.
As my tasks are not that code-heavy, I'm even using it to store code-snippets (mostly SQL statements for me). Using a "real" versioning system is better if you want to keep track of different versions. Other than "use it" I can't offer specific advice for this area.
However, what has been important for me in GTD fashion: Use a simple system for almost everything. That way, the time to search for something and to decide what to put where is cut down.
Keep all your code in your Version Control System, and create build/run scripts for each. Your data you are going to have to carefully file away (since you don't want to put it in SVN).
The other thing I would add would be a wiki so you can make notes quickly about each test/script/application.
why not checkout some opensource projects to see how they organize their code bases?
even though you are a one-man team. it'd be smart to organize your project so it would be easy to add more programmers.
also if you're worried about filesize for data files you might want to checkout git. the index size is usually a lot smaller than that of svn.
Version Control is a must, as others said. Keeping descriptive labels of milestones on Version Control is very very helpful I think.
Also as IronGoofy said, I keep my snippets in my Personal Wiki TiddlyWiki, I uploaded it to my website, so I can access it anywhere, anytime.
As an additional option you may think a Time Tracker application. There are many free Time Trackers. I use ASP.NET's Time Tracker Starter Kit. You can keep evolution of your software, bugfixes, milestones.