Remote collaboration for my RoR project - ruby-on-rails

I have a Ruby on Rails project in my local machine and I use the RubyMine IDE to change the related source code.
Recently, I found a (remote) collaborator for my project, and I would like to share my code with him so that we can work on it. However, I am not sure on how to proceed to make it possible, and also have some troubles e.g. on how to properly manage Git version control with my collaborator.
Since we want our project to be private and cannot use paid services (e.g. GitHub), I thought about using Dropbox as a repository so that both me and my collaborator can change the source code but keeping advantage of using git version control features.
Have you some advice about? Is Dropbox is the right choice? Can you point me out to good resources?

Assuming you are saying GitHub is paid because you need it to be private, you can use bitbucket

You can use Bitbucket instead of Git. On Bitbucket there are 5 private repository are free...

Related

how to use bitbucket to allow 2 people to work on one project at the same time

My partner and I are trying to work on the same project in android studio at the same time. We were told that bitbucket was a method by which we could accomplish this task. How? Please make the answer detailed, I am willing to read.
All bitbucket is is a place to host your repository privately, it'll be your "remote." What you need to do is learn git, pretty much everything will be the same for github and bitbucket.

Git - xcode - single project multiple developer on LAN

Using facility of git which is provided in the xcode I have setup one project. I got the understanding about the branch, commit etc from This link
Now I want to share this project with the other developer who can make change in this project from his own mac. Both the mac is in the same network. So can anyone please let me know how can I achieve it. If any link from where I can refer would be great help.
What Xcode sets up is a local repository that is specific to you, and your Mac.
What you want is a central repository that developers can clone, so they can work in their own local copy of that repository. Each developer can push their committed changes to the central (origin) repository. Others on the team can pull those changes to their local copy.
You can host this central repository in-house, by using OS X Server and Xcode Server. Alternately, you can use a remote repository, as offered by sites such as GitHub and Bitbucket.
This is a much cleaner solution, and offers far more flexibility and functionality than the problems that will arise trying to work from a single local repository on a shared drive.

Releasing proprietary iOS SDK using github.

We built a library (SDK) for iOS. The source code of the library is closed (proprietary). The output we want to release is iOS frameworks, API documentation, setup guide, license file but NO source code.
We are discussing differant ways to release it to public.
1) One way is to create a public git repository hosted in Github and push all the output in it.
2) Other way is to host these files in our own server.
Is there any benefit of hosting it on github over hosting it on our own servers? I know git is to manage source files but in this case there is no source file that we want to publish, it is just the output. Is there any general rule to release iOS close source SDKs?
I am inclined more towards hosting the SDK (as zips) in our own server. I believe it is always the latest SDK you market in your website and not the older SDK.
Is there any benefit of hosting it on github over hosting it on our own servers?
The main benefit is cooperation/feedback: on GitHub, people can fork your repo and send back pull request.
If you choose that publication option, I would maintain a parent repo with two submodules:
one for the proprietary code
one for the public code.
You can push the former on a dedicated private server.
You can push the latter on GitHub.
Using separate Git repos (here as submodules) minimizes the risk to push the wrong data to the wrong upstream repo.
That proposition is for text files only though.
Using Release (as in this question mentioned by the OP msk) isn't a good way to distribute deliveries, because the repo would be empty (no code, since it is proprietary), and would only contain deliveries (not necessarily executables).
Release in GitHub is done to associate deliveries to codes (through tags), and cannot accommodate any binary of any size.
In the Op's case, distributing deliveries should be done through another referential (typically a Nexus one, meaning an artifact repository, without size limit)

Best Practices for TFS and MVC projects - deploying changes only

I have several websites that I manage for a company and they want me to transition to TFS. As part of their policy, I can only deploy files that have changed since the last deployment. I.e. if a view has changed then it gets deployed, if it has not changed then it not part of the deployment package. They use automated tools for the deployments.
Currently I use a custom tool I wrote that hooks into my local source provider (Vault Pro) and finds all the changes from a given date and copies those files to a zip file.
How can I accomplish something similar with Team Foundation Server?
TFS provides you with an SDK that you could use to query it from code. Here's the documentation of the client API.

Git or SVN for Rails app?

Which version control system should I use for a Rails app: Git or SVN?
Here are some factors to consider:
I'm the sole developer
I'm familiar with SVN
I've only used Git for a week, it seems pretty similar to SVN really.
I want to put my repository on a remote location and connect to it via SSH or other protocol (which I already do with SVN).
Edit: Thanks for the responses so far. It seems like Git is slightly more favoured. Does it have any SSH functionality?
I'd say go for Git. Mostly because I'm biased, but also because you don't need to setup any sort of server with Git, you just git init and go. Git is generally just better, it provides more flexibility and power than SVN does.
Edit: This is a bit of a dupe of Why is Git better than Subversion, or at least relevant.
Edit2: Git has 3 primary methods of communication, the Git protocol, SSH and HTTP. Github uses SSH for "push access", e.g., git#github.com/user/repo.git.
As a single developer who is already familar with SVN - if you want to be as productive as possible use SVN.
If on the other hand you really want to learn GIT and can afford a bit more time to learn it, use GIT.
Use Git, if for no other reason than that you can use it almost exactly like SVN (including remote management of multiple branches over SSH) and it's much, much faster and more reliable. Local checkins and branches, distributed version control, revision history management, etc. are only side benefits.
In my experience the only reasons to prefer SVN over Git are: a legacy SVN repository, or the requirement to use Windows on the client.
I would have replied in comments but I can't, yet.
For those who don't know, Git work with Windows. If you don't like the msys's version, TortoiseGit is already usable.
Since you're solo and want to put it on a remote location: SVN, but you should learn/use Git as well. You could also combine the two, use Git locally and SVN for the remote..
It's probably a good idea to use some sort of version control. It's also probably a good idea to have remote backups of your code.
Git and svn are both good version control solutions and are both popular within the Ruby/Rails community.
If you were in a distributed development group I'd suggest git might be more appropriate since one of its specific design goals was for that situation.
If you were on Windows, I'd hint that TortoiseSVN probably provides a less challenging experience than, say, msysGit.
Mostly, though they both seem to do a similar job and do it well.
If you specifically want to learn a new source control system while building your project, go for git. Or if you intend spending a lot of time in, for example, edge Rails, which lives at Github, again might as well go for git.
Otherwise I'd say you should stick to svn.
If you have a day to learn Git, then learn Git. It has all the functionality that svn has, plus cheap branching/merging, local commits, and the option of distributed development.
It is easy to work with remote repositories. If you're just looking for some kind of public hosting, then you might want to look at Github, which has free public hosting, good Ruby integration, and many pretty graphs.
I'd say there's no particular difference.
Both systems are just tools, and both of them will provide you with with the functionality you're looking for. If there's no other parameters to consider, I'd say go with SVN as you already know it and you don't need time to learn it.
I'd add one follow-up question: are you working on this alone? The GUI tool support for Git is generally lagging that of Subversion, so if that is or might become a consideration, then I would opt for Subversion.
For example, if your designers use Adobe CS4, they can use its built-in Subversion support (and you don't have to teach them Git). So consider the current and future composition of your team as a factor in your decision-making.
I used to love git, but have recently switched to mercurial. It has exactly the same syntax as git, but is written in python, and has lots of nice bells and whistles out of the box, like a web server for visual tracking of commits.
I know that this can be set up for git using gitweb for example, but it requires a bit of work.

Resources