My workflow includes having to develop at work (a University) where I don't have admin/install rights on a Macintosh OSX workstation. Right now I just use a USB stick to carry the code around, but this is so very old fashioned and makes no good use of source control principles.
I want to start using Mercurial (and/or Kiln) for my work, but is there anyway I can do so in this environment? I'm willing to use GUIs, command line, workarounds like using any weird free portable IDE configuration solely for use of a portable Mercurial plugin, etc.
I can find plenty of links for doing this on Windows, but not Mac. At the very minimum I need to be able to commit and update my local code. Everything else would be icing on the cake, but I'd settle for really minimal functionality on Mac. If need be I can do more intensive operations on own windows laptop where I can install anything I want, but without commit in a locked-down Mac environment it'll be nearly useless in my work.
Added Detail: My work is mainly web development, most recently jQuery/HTML5. My workflow mainly uses Dreamweaver for code editing and design, which is pleasantly available on all Mac workstations at my University.
Yes. Use of Mercurial does not require admin rights. It does seem that the official Mercurial installer requires admin rights (because it wants to put things in /usr/local/bin), though, which is a shame.
If you look round for graphical Mercurial clients, you will find that some of those do not require admin rights to install or use. MacHg doesn't seem to, for example. Download, unzip, run, enjoy. Murky also has a zip download, so i'd guess that was the same. SourceTree has a .dmg which opens to reveal a copyable application, so that also shouldn't need admin rights - it suggests you copy it to the Applications folder, but you can put it anywhere.
I would imagine that all of these programs include a copy of the actual Mercurial somewhere. In MacHg's case, it's at MacHg.app/Contents/Resources/localhg. You can use that from the command-line as usual.
Can you recommend one over another?
For Windows and Linux (It also partially work on Mac, look at the comment of Nicholas Riley to this answer) there is TortoiseHG clone of the excelent TortoiseSVN
The great thing about theses two is that they are integrated in the shell (Windows Explorer or Nautilus). You see small icons over your files and folder that inform you about the status of your file in regards to the repository and you have a collection of commands/tools accessible from the context menu on theses files.
I like Murky. There is another that's okay but not quite as good called SourceTree.
There's also MacHg, which I was introduced to recently.
Take a look at mercurial page for GUI tools and integrations to IDE: https://www.mercurial-scm.org/wiki/OtherTools
For Windows I use HgWin tool (http://www.newsupaplex.pp.ru/hgwin_news_eng.html), which provide a GUI for the most of mercurial commands. It is similar to hgtk, but uses mercurial command line client (hg.exe) as backend.
I have recently begun a new project which runs on remote computer. I usually remote debug the application. I have setup microsoft sync toy to "echo" the built exe,dll,pdb and configs to the remote computer.
However, i cant add synctoy to my visual studio build events because it might disturb some of the other programmers in my team. I was wondering, which (free) tool would you guys use to watch a folder of files and kick off synctoy when a change is detected.
I can write a simple file watcher, but rather than reinvent the wheel, i would rather just use an existing tool. Searching on google yields so many tools, i wouldn't want to try them out just to find a good one.
It may fall under the banner of reinventing the wheel, but if you are using .NET, the FileSystemWatcher class, albeit without a UI, is pretty much as comprehensive as you can get, out of the box.
I'm sure you could knock something up with it in a very short time.
What about using Robocopy with the /MON or /MOT options? See http://ss64.com/nt/robocopy.html for more details.
I am writing a WiX-based installer for our software. I need to download some non-trivial dependencies (like Sql Server Express 2008), then install them.
I could just use wget, but having the console open to show progress could be very confusing for non-technical people. Instead, I have been looking for a program that works just like wget, but shows its progress in a very simple window with the name of the file and the progress.
If I could show a small message that would be fantastic, but just having the GUI progress is the main thing.
I would even be interested in an existing program that almost does this, which I could recompile to add whatever I need. Since this is in an installer, it can't depend on .Net or anything else that needs installing to work.
Is anyone aware of such a program?
Why not to get wget sources and remove console output from there?
Since I did not find such a program, I wrote one. I used the latest libcurl available for Windows.
The code is not beautiful, and the program is not feature-complete, but it does what I need it to do: download from http:// while displaying a simple, attractive Window.
The titlebar is customizeable on the command-line, and I intend to allow window positioning too.
The project is hosted on google code: http://code.google.com/p/installerget/
I am developing an application for the Mac as a small team (me + another person) effort. We are located in different cities, and have started to see the need for solid source control management.
None of us have any experience with this, and both of us are relatively new to Cocoa/Obj-C/Xcode (but do have C knowledge).
Does anyone have any recommendations as to which SCM system to choose? I understand that a lot of people are using Subversion, which is also supported in Xcode 3.1. Does anyone have experience with using Subversion through Xcode? Or is it a better option to chose a stand alone GUI alternative, such as Versions?
Grateful for any input on this.
Gregor Tomasevic,
Sweden
Update/personal experiences:
Since this post, we have tried Versions and Cornerstone (both of which are SVN GUI-clients), as well as Xcodes built-in support for SVN. We were not particularly pleased with Versions, which seemed to have some problems with committing unversioned files/build files. The built-in SVN support in Xcode works quite well, although it probably has limitations that we have still not run into. Cornerstone is both simple to use and powerful, and does not seem to suffer from the problems we encountered with Versions.
So far, we have just tried committing, updating repo, checking out latest/previous versions of our files and worked some with file comparison. It might be a whole different ball game once you start working extensively with branching, an area which we have been told both these GUI clients might have some weaknesses in.
For what it's worth (and with only days of evaluation) Cornerstone seems to be a somewhat better alternative, although for simpler SCM, Xcode works well too.
Thanks for all the comments.
Xcode only supports Subversion, Perforce, and CVS. However, there are also distributed version control systems out there, such as Mercurial, Bazaar, and Git. These have no Mac-native GUIs, but you should still consider them. Personally, I love managing my projects in Mercurial repositories.
[Added 2011-03-10] Xcode 4 adds support for Git. Several of us have filed requests for Mercurial support; you should, too, if you want it.
There is a nice GUI frontend for Mercurial on Mac called MacHG: http://jasonfharris.com/machg/
It is free and very nice IMHO.
You can't really go wrong with using Subversion.
If, like me, you don't like Xcode's SVN integration too much you can always choose to use the command-line tools, or one of the several GUI apps like Versions, CornerStone or SvnX. Most of these tools work together pretty well, so you're not necessarily tied in to the tool you start out with.
I personally do most of my work with Versions, and use the command-line tools with the same working copies every once in a while.
If you're comfortable working with command-line tools exclusively until someone creates a good GUI app around it, git is a pretty viable option too.
disclosure: I'm one of the people who work on Versions, so I might be slightly biased ;)
Xcode's Subversion support is pretty good. 90% of the SVN activities I perform are easily doable from Xcode. For the other few things I just fire up Terminal.
There are a couple things in their SVN client implementation that are annoying:
The code that checks to see which local files have been modified seems to run on a background timer, and its pretty latent. Sometime it takes 5 minutes for Xcode to show a file as modified. The same thing is even more exaggerated w/r/t remote modifications.
Sometimes when you rename or delete a file that isn't under source control, a dialog will appear, asking "Do you wish to [rename/delete] this file in SVN as well?" And the options are "Yes" or "Cancel." You choose Yes out of desperation only to be presented with a well-deserved SVN error.
Overall, I'd recommend it.
Caveat: If you simply tell XCode to add a project to a repository by giving it the top-level dir, it WILL add the build directory to the repository, which of course is a terrible thing to do.
In order to get around this you have to move the build dir to another location so that XCode won't try to import it, or manually add the discrete folders of a project one by one.
Subversion is the traditional OS X source control solution, in Leopard it's supported in Xcode and OS X, not to mention the third party GUI apps (a few of which look very slick). Despite all of this though, a lot of the independent OS X developers have switched to Git over the past year or two. As a single developer I can tell you Git has turned out to be a very good solution for me, and along with Github it makes a great solution for a small team effort.
If you're interested in using Mercurial on OS X, try SourceTree, it's not free but it's competitively priced and has a very polished Mac OS feel. I've been using it for personal projects for the last few months on and off and find it intuitive and reasonably robust.
It's available through the Mac App Store and supports Git and Mercurial. They have a website at http://www.sourcetreeapp.com/ with more information.
If your going for subversion, I've heard good things said about Springloops. I code together with some friends too in a similar fashion and we use Github. Git is such a wonderful experience. I don't use any GUI for it since I'm much more efficient with a shell prompt. But of course, I'd welcome if Xcode had support for Git repos.
Mercurial (like git) is "distributed" and perhaps regarded as more modern and up-and-coming than svn (but less established). If you want to auto-checkin using mercurial, you can add the line:
hg commit -m "Xcode auto commit"
as part of a "Run Script" stage of the XCode build, as found in:
Project > New Build Phase > New Run Script BUild Phase
I use : https://bitbucket.org/hsivank/xcode4-with-mercurial/wiki/Home