Lightweight versioning system for standalone development [closed] - version-control

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I develop a lot of prototypes while I am trying out stuff. I wish I could have a lightweight versioning system which would keep backup of these and make it easy for me to find them next time. It would also help me in keeping track of all the various techiniques I have tried for solving a particular problem.
I would like to know your suggestions on using the right tool for this Job.
Update: A simple google would have given me the names of all the version control apps and git be my preferred choice. But I would like to know which would be the lightest app for the job and why. I dont want a single repo to take GBs of space.

BitBucket + Mercurial is a good combination.
Bitbucket is a web-based hosting service for projects that use the Mercurial revision control system. Bitbucket offers both commercial plans and free accounts. Unusually - and possibly uniquely - for a project hosting service, as of September 2010, it offers free accounts with unlimited numbers of private repositories (which can have up to five users in the case of free accounts).

Git would be the efficient in handling space as thats their claim. Check the link below
https://git.wiki.kernel.org/index.php/GitBenchmarks#Git.2C_Mercurial.2C_Bazaar_repository_size_benchmark

A DVCS such as git or Mercurial will let you create a repo directly in the project directory that you can use to track and manipulate changes.

Go for a DVCS like git or mercurial. I use the Tortoise Hg version of Mercurial, and I have found it very easy to set up and to use for personal use. As #Ignacio says, you can set up the repository in your project directory. You can also set up consolidation repos to manage across projects, and to keep track of multiple different approaches on different projects. Setting up a new repository and populating it takes less than a minute. The learning time for this system was minimal too.

I would recommend Mercurial.
It is quick to setup for each working copy/repository, and doesn't require a separate server.

I do software development mainly on the Windows platform. Thus I use VisualSVN to help me keep my repositories on my home network storage (or on the local computer storage) acting as the server, and I also use TortoiseSVN to access local SVN - acting as the client.
This allow me to work on small local projects which is easy to maintain.

Related

Where does GitHub store my code and files? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 1 year ago.
This post was edited and submitted for review last year and failed to reopen the post:
Original close reason(s) were not resolved
Improve this question
I have tried to found out, where does GitHub store the code and files I commit? After a lot of search I found only that it is stored in the Cloud. This is too broad for me. I don't have (or don't know) the method, how to found exact answer.
Where does GitHub store my code and other data I commit? What is the hosting of GitHub?
Main servers are in the US based on my observations.
git pull from San Francisco based server is lightning fast while Australian servers are significantly noticeably slower.
Possibly some additional regional hubs too.
They were at some point hosted with racksapace, no idea if still are or not.
https://www.quora.com/How-many-physical-virtual-servers-does-GitHub-have
Currently Github seems to have its own datacenters in the USA: Northern Virginia and Seattle. https://github.blog/2017-10-12-evolution-of-our-data-centers/
GitHub is just a wrapper web service over Git technology.
Just like any other version control system, Git stores your committed files under a directory on the server like github/users/username/repositoryname. Under this directory there are the most updated files which are exact copy of your local clone.
To see in more detail you can setup your own Git server:
https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server
or you can install a clone script of GitHub like Gogs:
https://gogs.io
Github uses Git which can be seen as an object data storage. In this storage, files and directories are stored as git trees and blobs.
You may want to read about git internal to understand its architecture.
In addition, Github uses ElasticSearch as a primary software stack for indexing more than 8 million repositories, allowing full-text search on source code, issues, users...
You may want to read this article
https://www.elastic.co/use-cases/github
Git is a “version control system.
Version control systems keep revisions to code straight, and store the modifications in a central repository.
How Git stores the files ?
Well here is some reference material :
1) http://gitready.com/beginner/2009/02/17/how-git-stores-your-data.html
2) Git internals pdf : https://github.com/pluralsight/git-internals-pdf

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.

Version Control for non-programmers [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
Can someone recommend a version control engine + GUI that will be good for non-technical users? I'm perfectly fine with using Subversion with my team of developers, but I want to find something that will help the rest of our company.
We are a design firm that deal with these type of files: Photoshop, Vectorworks, Microsoft Office, PDFs, etc.
I find GUIs such as SVNx and even Versions(which is pretty nice) too difficult and techy for our designers to use. It's hard for them to understand the idea of working directories and its relationship to a repository.
We are a small company and don't have a huge budget so we would like to stay opensource if possible.
Drop Box.
If you use TortiousCVS|SVN, its not too bad. Its a GUI/file based approach so its fairly straight forward. I've had non-technical people use it and like it.
If your non-techies are on a Mac, I would recommend SVN with Cornerstone from Zennaware. It's not open-source, but not expensive either. Our designers love it and it's got a great GUI.
Doesn't SharePoint come with Windows Server? It can handle file versions.
I can say that Subversion and Perforce are both problematic to non-technical users. We have been using Perforce as a document repository with some success. Though we have had more mistakes and problems than I care to talk about. We had slightly more success with Subversion and TortoiseSVN but even it was too difficult to most non-programmers to wrap their heads around. Though if you are lucky enough to have Mac OSX in the office, I would give rich's suggestion a try.
I would recommend looking for a CMS that supports history instead of a source repository. You should be able to find something out there that will do the job without too much work on your part.
I'd suggest SharePoint or Confluence. They both have a WebDAV interface which allows you to directly open and close files in the repository from Office and other current applications. SharePoint works better with Microsoft Office, as there are Microsoft specific WebDAV extensions in Office. Additionally, Confluence only offers WebDAV through a plugin.
Both of them are commercial products, though Confluence does have a shared source license, allowing you to make local modifications.
Bazaar has a pretty straightforward interface for the basic version-control tasks.
At some level, you're going to have to explain the basic concepts even to non-technical folk for them to make any use of it (there's no real way to "hide" the concept of committing your changes, for instance), but at the very least Bazaar's UI makes it pretty simple to do so, and keeps the option complexity down.
I recommend to check NeverOverwrite.
It keeps all versions of your files automatically. Sounds like an an ideal solution for non-developer.
How about a Wiki with some minimal version control built in ... like mediawiki
Why do you use source repository control for binary files like Photoshop, Vectorworks, Microsoft Office, PDFs, etc? I think Content Management System works better for you. Try using Alfresco, it's opensource and powerful.
I find sourcetree extremely intuitive for git/mercurial (no support for svn). It is for Mac and windows. It makes common operations like switching branches, merging, branching, reverting - which otherwise would be painful - quite easy.
But for your case I think VC solutions (that was built for coders) is not optimal as you will not be able to see differences between two versions of files as .psd, .doc, .pdf - these cannot be handled by the internal diff tool - so you are missing a lot of the power of version control

How to manage personal projects [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
I am a student and I always develop projects on my own, mainly with Ruby On Rails.
I noticed that even a simple project may become complex if you can't easily rescue deleted code and pass from a version to another. Time Machine backups are not enough.
I would like to use a version control system, but they seem not to be intended for single-user projects. Am I wrong? If so, what policy and software do you use for managing your code?
There is nothing that says you can't use a standard version control system if you are a single user. Doing so would definitely keep you from experiencing some of the more painful problems such as merging files changed at the same time and other conflicts that arise from multiple developers.
Based on this, you could look into any of the version control systems (I believe Subversion is far and away the most popular right now) and pick out the one that will most closely match your needs, or has the interfaces you are most comfortable with.
Distributed version control systems are just for you: look for Bazaar, Git or Mercurial. They are lightweight, local commits are easy and you can always revert to a previous version. With a hosting provider such as GitHub, you can publish your projects, you get backup for free and you can easily share the projects with other potential contributors. Collaboration is easy because merging your changes is also a lightweight operation.
It is definitely a good idea to use version control software, and other project software on your own projects. These tools are not just for team working, although they allow team working. Beyond the obvious reasons for keeping track of your changes to the project it is a good idea to use SCM tools so you are familar with what the industry is using.
Subversion is widespread, and is quite a good bet as it's successfully replaced the earlier and older CVS tool. It relies on a central repository where the code is stored and can be backed up: where I have used SVN for personal projects and small team projects I have backed up to CD. If your project is opensource there are sites like sourceforge that support svn which you can use for hosting.
However as some of the other posters have indicated, a personal project might benefit more from a distributed system: git is increasing in popularity since git-hub has come online and porting efforts to are succeeding. http://git-scm.com/ It is likely that tools like these will grow in popularity over the coming years as they allow a greater number of people to participate on the same code. The idea of one central repository is relaxed giving each developer the ability to version track different designs and only give back to the community the versions they complete.
One of the benefits with using SCM for all projects personal or not, is that a separate server can be set up testing a version of the code. Automated testing on the latest version of the code (using a Continuous Integration Server or similar) can improve the quality of the software you are writing.
Some highly experienced software developers talk about a rhythm where they make incremental changes checking in frequently. Getting into the habit of making small changes which are complete and checking them in: is a good practice to get into for group working.
I would recommend Subversion. It's free and relatively simple, and learning a little about it may well beneficial in the future. It's cross platform and also available on a variety of hosted systems.
See also: https://stackoverflow.com/questions/250984/do-i-really-need-version-control
and: Using Version Control for Home Development?
Subversion!
You can install locally or use a hosted service. The services are nice if you want to switch between computers or use it as an offline backup. http://www.beanstalkapp.com/ has a free plan for personal use.
GitHub (git, not subversion) is also popular but I believe there is a small fee for personal projects.
Use git. It allows you to work without ever needing a server.
There are utilities for the command line and a GUI (older screenshots) too (for linux, windows and OS X).
If you later want to share or publish your project you can easily push it to a site like github.
Even for personal projects, if they become bigger than something you write a few hours, a version control system will be very beneficial.
Here are a few good points:
Many version control systems have good integration with IDEs.
Branching will allow you to experiment without the fear of having to take a long time to revert the changes. The branch can later be merged to the main trunk if needed.
Having a history of changes can be helpful, and tagging will allow setting milestones.
More efficient storage than full backups using regular copying of files.
Extra metadata (such as commit comments) can be attached.
Many version control systems are free!
I personally use a Subversion server running on my system which I access via the Subclipse plug-in in Eclipse, which I find to be very helpful in keeping track of my personal projects.
If you're interested in Subversion, Version Control with Subversion is a very helpful source in learning about the concepts, and how to set up and get started with Subversion.
Version control systems may be a little difficult at first, but it's definitely worth the effort to set up!
I'm very wary of using "always" in any answer I give on SO...
ALWAYS use version control. These days it's free AND easy to do. There's simply no reason ever not to use it. If it's an hour long project...good...it's an hour long project that's in version control now.
My solution has been slicehost(ok...not free), redmine(free RoR bug tracker)git and gitosis. Starting up a new project adds about five minutes on to the front of any coding, but its five minutes well worth it.
Use SVN or Mercurial.
Both very appropriate for "home" usage, I think Mercurial is better for you because by default you'll be creating one repository per project ( oposed to SVN's one "big" repository that stores everything ), so it will be easier to backup individual projects or exchange sources with others if needed.
Both work in command line mode or using explorer-like interfaces ( Tortoise ) or plugins available for the most usual IDE.
I use subversion to manage all my projects. xp-dev.com is a free subversion hosting solution. Also, I think, if you install tortisesvn it installs a subversion server to use locally.
A complete different version control system is dropbox (www.getdrobox.com). It's not (only) intended for source code. It available (with smart OS integration) for Mac, Win and Linux plus private Web Interface.
It may be interesting for you.
One item you will like about git such as using github hosting is that you have a history of changes that you can go to and get the actual code source and thus 'rescue' previous code changes.
You could also use the dropbox approach in just backing up raw code to a folder on the cloud..
I have used both methods for personal projects.
Hosted version control such as beanstalkapp.com is very convenient, but do consider whether you want to hand your source to a third party. You could consider a local repository, backed up online with a solution which encrypts the contents locally before uploading. I do this with subversion, Amazon S3 and JungleDisk.
Bitbucket is an absolute must consideration for personal projects based on:
Free, unlimited, private repositories
Up to 5 users on their free account
Git and Mercurial support
This allows one to quickly spin up a repository without having to pay attention to how many repos are available under a paid source code hosting account.
It also allows projects that will enter the public domain to be simply forked to GitHub, etc.
Version control is always important.
Try a free online SVN like http://beanstalkapp.com/
Do a search and you can find lots of suggestions
I would highly recommend downloading VisualSVN Server. It's a very simple setup and will do exactly what you need.
you can use any version control system that exists just for single user development. as you said, even simple project can become a nightmare if you change something you think is better and it fails. download tortoise snv - it's free and pretty simple to use - and keep your working versions in repository. commit code that works, keep possible small changes (for example refactor one class), build it, test it if it works -> commit, if it doesn't and you don't know why you can allways revert changes and try again.

Simple single user revision control [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
I work alone on various small projects. I work in different places and on different machines (at home, at work), so I have to synchronize source code between them.
Currently I just work on different directories (for versions) and email myself zips (for syncing the work done at home with the work done in other places).
How can I improve my workflow with some version-control or sync tool?
Do you have a server you'd have access to from everywhere? If so, just put subversion on there. Or use github or something similar. Pretty much any version control system which can talk between different machines over the net should be fine, IMO.
I don't think I'd call Subversion "overkill" - it's pretty simple, easy to run, and there are good Windows clients for it.
In terms of hosting, if you're happy for it to be an open source project, then there are any number of places which you could use - Google Code, SourceForge, github, CodePlex etc.
for this purpose I like using mercurial since it requires no time consuming setups (e.g. svn requires a server somewhere).
Git is a fine solution for version control, suitable for scales of project all the way from single user to the Linux kernel (and beyond). I use Git for all my personal projects, and can easily work in multiple places and merge the repositories later.
With the use of a common web-accessible repository like Github, working in multiple places becomes even easier.
I suggest Mercurial. I used to use Subversion, but it is tedious, especially if don't have Internet access at all times.
I agree with others SVN does solve the problem of working in multiple places. However, like dfa I prefer Mercurial (hg) for this, because then I don't have to choose one master location/server (or do server setup).
I personally use Mercurial. I prefer it over subversion because:
I don't need a server per-se
I can have local commits, which is very useful when you're working on several machines
I would recommend you one of the distributed version controls out there, like mercurial, git, bazaar, monotone and so on.
working on different folders for different versions is just what their branching is ideal for - you can merge every branch with every branch if you wish to.
just throw an eye upon them.
I use a system like Assembla to keep my Subversion repositories offsite, and then use TortoiseSVN to keep projects in sync on multiple systems. I also run a full SVN server at home which I keep private paid for projects on. I tend to move between my Mac and my home PC regularly for development and find this the simplest way to keep the files in sync, and at the same time providing and external backup.
SourceGear Vault is a popular windows-based version control system. Pretty easy to set up, but you do need a windows machine acting as a server.
For single users, it's free.
I would say "TortoiseSVN" is a good choice, better than no source control software at all
I'd go for Bazaar personally, I've just started using this at home for personal projects and it's really simple to use.
I would recommend using Bazaar, and if you don't like a fancy console you can use Bazaar Olive.
I don't know how I got it installed but I also have Tortoise Bazaar, which allows me to work with lower end version control servers :)
why not use something like sourceforge.net ?