Can Subversion limit a developer to accessing only certain files? - windows

I need to outsource some programming. I was thinking of setting up a computer the programmers could Remote Desktop into with a full test environment set up on that computer.
I have never used subversion and was wondering if I could give them access to only certain modules so that could not even see the code to modules they did not need?
Thanks in Advance,

... if I could give them access to only certain modules so that could not even see the code to modules they did not need?
Sure, at least on directory level when serving Subversion through Apache.
See the http chapter in The Book.
If you're on Windows, Subversion server wrappers like free VisualSVN Server make access control brain-dead easy.

I know that in Windows, the user they use to access the Subversion system can be a normal Windows user, and you can just set up permissions to allow access to folders that way.

Yes, take a look in the conf/authz file.
Plenty of examples in there.
However, if you are giving them full access to the machine with subversion on it then that won't help stop them...

Related

What is the right way to share / reuse Ruby code on different machines?

I have a VPS and usually I write Ruby scripts for daily tasks. Sometimes I want to use the same scripts / methods on my home machine too. How should I share and reuse the already written codes between the too machine? Should I write a gem and install on both machine? Or is there a way to use the "load" method to load Ruby modules from a HTTP or maybe NFS share? HTTP would be preferable like in JavaScript / HTML, I think, however the "load" method seems to be not working with a HTTP url.
I think using github or some other source control software would be the most appropriate idea.
Sharing code via HTTP or NFS seems very weird to me. I can think of problems with loading from external sources according to reliability and security.
I would prefer a Gem or at least a git repo that I can check out when I need the code on a different machine.
Version control system like Github or BitBucket is perfect for this. You'll basically have a central repository (on their server) where you'll store your code. Suppose computer A makes a change and "pushes" it to the server, now you can easily let know computer B, C etc. that there was a change made and they can update the code that's there.
Ruby comes with a powerful package management system called RubyGems that was created for exactly this purpose.
My tool of choice for sharing scripts between various machines is Dropbox - cheap and quick solution. For me works perfectly.

How to setup a SVN

We are a small team (undergraduates) works on some freelance projects. we need to have a SVN. how could i do this? how does it work? do i need a dedicated server? or could it be done with a virtual server? Please clarify me.
Thank You.
uberSVN has a nice web interface if you want something easy to administer
If you are not familiar with Subversion, you might be, in your circumstances, better off reading up on Git. Git is a distributed version control system and one of its main advantages is that each user has a full copy of the repository. This means that your repository doesn't have to be up on the Internet at all times.
Another big advantage of Git is that you can submit patches (what Git uses for Source Code Changes) without a network. You simply create a patch, which can be transfered via email, a patchfile sitting on public file area like Dropbox, or even a USB thumb drive that's passed back and forth. In fact, you can trade patches with anyone and not with the main repository.
That means if you have four users, User A and User B can trade patches back and forth in one project while User B and User C can trade them back and forth in another project. In the end, you can all submit the changes to User D who would have all the changes.
If you can't use Git, Subversion works well in many circumstances. It'll work on virtual servers, and can use multiple protocols for communication. The simplest is probably the _svnserve` that comes with Subversion. You can setup basic security with svnserve very easily. Subversion is very light weight, so it takes up little processing bandwidth.
SourceForge is the most widely known free Subversion hosting site. Google Project Hosting is also a good Subversion hosting provider. Or, if you already have a system that's sitting on the Internet, you could just run svnserve and do your own hosting from that.
If you have your own system, and feel like being really fancy, you can use httpd to run Subversion under http or https.
Take a look at the on line Red Bean Subversion manual on the Web. It's one of the best open source documents around.
If you're a complete beginner, and don't want to learn the ins and outs, go with a hosted service. Many have free offerings like http://beanstalkapp.com or http://xp-dev.com/
Here's an SO question discussing many of the hosted providers
https://stackoverflow.com/questions/69384/opinion-of-hosted-svn-providers
It would run fine on a virtual server, it has very little overhead. Here's a quick tutorial on setting it up on Windows (since you tagged it Windows).
The easiest way to install Subversion on Windows is to use VisualSVN server. It integrates into your services and provides a nice GUI for management.
Whether you should use VM or a real PC highly depends on your usage. VM has very limited resources and therefore might introduce lags on heavy usage (large projects > 50mb, frequent commits and checkouts, frequent polling). For less than 20 developers VM should be just fine.

Zero deployment CouchDB embedded in a Windows app?

I'm probably dreaming here, but am wondering if there's any possibility of completely embedding a minimal CouchDB engine within a Windows application, such that the app can be run without requiring installation (of CouchDB/Erlang) on the user's computer.
I already provide this slimmed down / bundled ability - check here https://github.com/dch/couchdb/downloads and specifically the lean bundle at 16MiB erlang + all couch love here https://github.com/downloads/dch/couchdb/couchdb-1.1.0+COUCHDB-1152_otp_R14B03_lean.7z
Some brief notes on bundling and embedding couchdb on windows at wiki.apache.org/couchdb/Quirks_on_Windows including how to hide the erlang window (erl.exe -detached) at startup.
Ask on CouchDB #user mailing list if you want more info or help while you have a crack at this.
While not a code solution, you could use one of the bundling applications that can embed files and other files into one executable. One example would be BoxedApp.
Why bother. It is so easy to install Erlang on Windows. Just bundle up the whole thing including the erl.exe binary and have your installer unzip it into a folder. The only thing that you would need to change would be the batch files, or better yet, discard them and write your own batch file to start up CouchDb. Also, it is a good idea to use a different port that either the normal Erlang port (or the usual CouchDB port) and maybe even get Erlang to use localhost as its "shortname".
The CouchDB wiki does provide at least a few tips for Integrating CouchDB into your Windows Applications. YMMV, from what I can tell it's more or less just tips on creating a relocatable build. You'll want to likely generate a solid random admin user/password into the local.ini file during the install process and set up proper permissions on all created databases (to protect against any potential cross-site scripting vulnerabilities) in addition to ensuring the socket binding only happens on the default localhost interface.

How do I make Remote Assistance as painless as possible?

I need to provide remote assistance to the users of my app, through the Internet. I need a reference for doing this, and I need to make the whole connecting to remote desktop process as easy as clicking a menu of my app for my users.
I don't want them to get too involved with the procedure. I believe the built-in remote assistance features of Windows XP and Vista are fine, I just need to make it very simple.
Anyone any ideas?
P.S. A comprehensive reference on the whole Windows Remote Assistance would also be appreciated.
I highly recommend Mikogo. It's free, fast to install and setup, works great, and is very simple. I actually prefer it to the more expensive services ($30-$40/month) because of it's simplicity. Only thing is, I'm not sure how they make money, they have some advertising when you visit the home page, but it's very minimal.
There are many commercial tools that do make this operation effortless. I won't mention any names because this isn't an advertising forum. A quick search should turn up a handful of possibilities; I've used many of the more popular ones and found them satisfactory.
Our support desk typically uses WebEx which works really well.
There are a large number of tools which will do this. Your best is to pick a tool which has a reverse connection from the person who needs help back to the helper. This will make sure that you do not have users try and configure firewalls/open ports etc. Webex is a good recommendation by Old Nick. Another option is GotoAssist, there is also Gotomeeting which can have the same remote control functionality and is cheaper i believe. The main thing is making sure it is as easy as it can be for your users, trying to walk a user through installing an active-x control can be hard enough.
I'd suggest trying LogMeIn. It's nice because once you have the user set up the client software, you can arrange with them a time to leave their PC unattended so that you can remote in and take a look (with the option to disable local keyboard/mouse and monitor access). You can also connect such that the local peripherals are enabled and watch "over their shoulder" as they replicate a problem.
There is of course also Copilot by Fog Creek. Have never used it myself, but it looks pretty easy to use, also for non-technical people.
I use CrossLoop for that kind of thing

Is there a barebones Windows version control system that's suitable for only one guy? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
I'm trying to find a source control for my own personal use that's as simple as possible. The main feature I need is being able to read/pull a past version of my code. I am the only developer. I've looked at a lot of different version control systems, but they all seem way more complicated than I need. I need one that's simple, runs under Windows, and doesn't expose itself to the network.
Specifically, the version control system should not require exposing an HTTP interface, it should interact with the local filesystem only. It just needs to be a version control system geared for one guy and one guy only. Graphical UI is a plus.
Does anyone know of software would satisfy what I'm looking for?
Thanks!
-Mike
Subversion is great -- you can run the server yourself or use something like assembla.com to host your code (although that exposes it to the network).
There are numerous gui applications like tortoise svn that would allow you to interact w/ the source control repo
From what I understand, and at the risk of sounding like a fanboy, you might want to consider a DVCS (distributed version control system) like git or mercurial. They essentially take away the central repository part, so it should be ideal to use when you're a solo developer.
Another advantage is that when you decide to add people to your one-man team, you don't have to set up a central repository. All they have to do is clone your repository and they're good to go!
If you're windows based and are used to a shell plugin like TortoiseSVN I'd pick mercurial. Their windows integration is just a bit better than git's, using TortoiseHg. The git counterpart (cheetah) is on hold at the moment, due to the developer getting sick and tired of all the demands people were making ;-)
If DVCS is too exotic for this situation you could always rely on SVN. I've heard good stories about the already mentioned VisualSVN solution. Install, make some repositories and go. Install TortoiseSVN for shell integration, or perhaps Subclipse or ankhSVN for eclipse and visual studio, respectively.
Note: I have not actually tried git or mercurial in a real life project, just some test setups. I now have a simple project WITH version control (using mercurial in my case), without having to have access to a central repository.
Sourcegear Vault is free for a single user and you can run both the client and the server on your own machine.
Subversion with TortoiseSVN.
Like all version control systems, it will sound reasonably complex when you start off, but it's really very simple once you get into it, works well for a single developer, and doesn't require any network access if you don't want it to.
Plus, it's free.
For what it's worth, you can use Subversion & TortoiseSVN without a server using file:/// URLs to connect to you repository. I've done this to create repositories on USB thumb drives that I can move from machine to machine.
Here's a nice write-up: http://www.fredshack.com/docs/tortoisesvn.html
I use the free (2 user?) licence of Perforce. Powerful, fast, and well documented.
I'm a very satisfied user msysgit for Windows. It contains a recent copy of git as well as a GUI, a shell and a history browser in a single install package.
No need for a server component and if you do decide to host it somewhere your repository is signed and cannot be modified by the hoster without you seeing it. Finally, moving the repo to a server is a easy "push" operation which keeps all of your history.
You really can't get much easier than VisualSVN for version control on Windows.
I like to use Google Code, even for my one man projects, as it provides a Subversion repository already set up. Also, the server is offsite, which protects against hard drive failures and other disasters.
You might find Mercurial to be pretty nice for that purpose. You won't have to set up a server and creating the repository is as simple as doing "hg init" in the directory where your work is.
All the previous suggestions are pretty simple, and I know cvs is a bit out of vogue these days, but I like to use it's local mode for a repository that doesn't even need a server to install or set up. The repository can be anywhere on your hard drive. I have mine on a memory stick to have access to it anywhere even without an internet connection.
The key commands are:
cvs -d:local:/full/path/repository init
to create the repository
mkdir /full/path/repository/project
to create the module, and
cvs -d:local:/full/path/repository/cvs co project
to check out a local version.
TortoiseCVS gives you your Graphical UI
Bazaar. See Bazaar in five minutes for a great start.
Whenever you save a file, run the $ bzr commit -m "Added first line of text" command, and it's all taken care.
If you edit over FTP, make the FTP folder as a drive or folder, and bzr update after the commit.
+1 for Subversion, for those not familiar with it I would recommend the SVN Book.
VisualSVN Server is a complete installer for Subversion Server on Windows.
VisualSVN is a Visual Studio plugin for Subversion integration.
You could go with Mercurial.
It's very easy to start working with and there's TortoiseHg which integrates nicely with Windows shell.
You don't need a server for it as it's a distributed version control system - you can hold a whole repository copy on a flash drive and push/pull changes from it.
If you wish, you can put hg in a web server mode that makes the repository easily accessible over http.
As opposed to SVN and CVS, it doesn't spread its metadata directories all over the repository. There's just one .hg directory in repository root.
I use it daily and love it!
I use Subversion and TortoiseSVN — both are free. Your repository can be on the local machine. You don't have to work over a network.
However, for disaster recovery or even simple machine fault, it's probably a good idea to store your repository on a different computer and also back it up.
You might want to consider using a third party service to host your repositories off-site over the internet. I use CVSDude and am satisfied.
I am also a lone developer, and I use Subversion and TortoiseSVN.
Setup of Subversion is quick and painless; it can be done in less than half an hour including setting up the repository.
There is no requirement by Subversion to run on a server, I actually run it on my local machine and keep my repositories on a separate drive. Connecting to the repository uses svn:// instead of http://. I'm not sure why you require that it does not expose itself to the network, but this would be a matter of security via obscurity. I'm sure networking experts could suggest better methods for locking it down, should that be necessary.
Once the repository has been created, commits and updates from the repository are as simple as right-clicking on a folder in Windows Explorer.
Any distributed revision control system is best for lone developers, like git or Mercurial. Best thing is you can incorporate more developers to your project seamlessly, as opposed to having to give them access to your main centralized SVN or CVS repository.
SVN and TortoiseSVN work for me. Definitely ensure you have offsite backup.
You might want to check out the wiki article Comparison of revision control software. A (slightly hard-to-read) comparison tool might help. You might enjoy If Version Control Systems Were Airlines.
I came here looking for the same thing, and I saw someone suggest Google Code. I tried it out, and it was brain dead easy to set up. Exactly what I was looking for. Works like a charm with TortoiseSVN (my favorite).
I came here for a solution, Google Code was all set up in about 2 minutes. You can choose SVN, git, or mercurial for your version control.
You should check CVSNT as server and use any of the clients you would like (standalone or integrated with your IDE). There are plenty of them.
Use Visual SVN to setup your server and then use Tortoise to access your repository. Both are free to use and we have been successfully using it for quite sometime now.
#gorgapor: Doesn't the Google Code TOS specify an open source license? It's not a generally applicable solution in that case.
I haven't seen anyone mention Perforce. Perforce allows you to use their software for up-to 2 users for free. You can run the server and clients in the same machine, which will give you the environment that you want.
This is much the same question as Source control system for single developer
The bottom line is: yes there is. More than one.
My opinion is that SVN will do just fine. it does for me in similar cases, as described here: Single serving source control
I have heard of a hosted Subversion vendor Versionshelf (http://www.versionshelf.com) on a podcast I listen to.
This site also has a list: http://snook.ca/archives/servers/hosted_subversion/

Resources