Running a web app from a repository - language-agnostic

Is a good practice to run a web app directly from a repository checkout? i.e. if I do a git clone and then start up my backend servers which the front end proxies to.
I've generally felt that it's the "right way" to run it out a directory that is a single version exported but I can't find any compelling arguments for either way of doing it.
Any insights would be useful.

There is nothing wrong with it. There are many deployment scripts that work that way and I think it is even a very good idea.
It's also a good idea to use tags to check out the correct version from the repository, or maybe a release branch.

Related

uding tfvc with readthedocs

I'm considering setting up my own readthedocs instance. I see that they have support for Git, Mercurial, Subversion, and CVS .I do however have a couple of legacy projects which are considerable effort to move over to git sitting in TFS using TFVS.
Would it still be possible to pull in these projects using the webhook method they're talking about?
What would be the code based approach to get this to work?
Eventually I'd like to get all these opened up on Github, but thats something I still need to sell.
No, it's not support to uding tfvc with readthedocs.
It's viable to use web hooks in VSTS directly. Document from MSDN:Web Hooks
However, if you want to use web hooks with TFS. You may need to use TFS plugin such as Cloudpipes. More details you can refer this link: Integrate Team Foundation Server with Web hooks

WIX InstallUtil/InstallUtilLib and Configuration File Deployment why is InstallUtil bad?

I often find the quote "InstallUtil.exe" is an ugly pattern or "Don't use InstallUtil.exe" and that I should use native WIX or Installation package patterns and I still don't understood why.
I stepped away from using InstallUtil to install a .NET service as I finally learnt that writing registry keys for such an action should be an un-install-able action - and I've come to terms with this as correct.
As I've been working through my WIX installer for a relatively complex product, I have found myself in need of creating or updating SQL Server databases, creating or updating IIS Applications and finally updating or creating configuration files.
Each of my components (features) are optional, but they all share the same configuration file. As my product uses unity, its important to note that this library contains strong support for reading/updating/removing components from the Unity Configuration block, therefore it seems fairly smart to me that I should take advantages of these blocks via Installation Components (i.e. InstallUtil) to create or update my configuration file at installation time.
Just to be clear here, my installer does not natively contain a configuration file for my application: at installation time, the installer has no idea as to the shape of it as its based on the features selected. Surely I should be embedding this knowledge into each of the modules that are to be deployed and not in the remit of the installer which is now a completely independent project? Wouldn't this break O-O principals even if we are talking about installation?
I'd really appreciate some guidance as to whether this is good practise or not? Am I reading 'InstallUtil' is bad for installing services, or is it that using 'InstallUtil' is bad full-stop? If so, what are my options for smart updating of configuration files?
The main reason for avoiding InstallUtil is that it runs outside of the installation transaction, so Windows Installer cannot keep track of what it's done.
I have used InstallUtil on a few occasions, when I just couldn't get Wix to do what I needed and didn't have time to write a custom action. In this case I called the InstallUtilLib version as I feel this is a cleaner approach.
I used the this blog as a guide as to how to achieve this.

Mercurial with WebUI

I searched a little and did not find anything interesting. I'm looking for a guide on how to install Mercurial server with a nice WebUI.
CollabNet Subversion under Windows to the Edge and I'm happy, but a lot of people write and say that Mercurial is better, so I want to evaluate this myself.
I am looking for a tutorial, or for any WebUI for Mercurial.
I'm not entirely sure how feature-rich you want the Web UI to be, but a good place to start would be with hgweb.
The simplest way to get something up and running is with the built-in web server from the 'hg serve' command:
https://www.mercurial-scm.org/wiki/hgserve
If you want something a little more involved for multiple repositories being served through a web server like httpd, here are some initial instructions to take a look at:
https://www.mercurial-scm.org/wiki/HgWebDirStepByStep
If you need something more like a local Github, maybe take a look at RhodeCode (disclaimer, never used personally)
I just saw a web app for Mercurial repository administration linked on another question : phpHgAdmin.
Apparently, you can manage your repositories and create new users, but no statistics.
I never tested it, but you maybe want to give it a shot.
Phabricator's Diffusion supports Mercurial: https://www.phacility.com/phabricator/diffusion/

Continuous Integration without the "Build"

Our group uses Visual Sourcesafe as a file repository for all of our "content" (HTML, CSS, Javascript, JSP). None of it requires building or compilation but we would like to automate the copying of it to a Unix dev server upon check-in.
I have used Cruisecontrol.NET in the past for CI at other companies but it was for .NET. What would be the easiest way to achieve our current requirements? Would using CruiseControl.NET be overkill or even a good idea? Thanks in advance.
-Sean
This sounds like overkill for a CI tool.
Visual SourceSafe and other version control systems should have hooks allowing you to automate a simple file copy operation.
From http://msdn.microsoft.com/en-us/library/aa302175.aspx
Use events, such as OnBeforeCheckout
or OnAfterCheckIn to automate your
process.
Whether this makes sense for you depends on a couple of factors. If you are talking about a large, geographically team with only change based deployment then yes, those are valid concerns. If you only have a few local developers and you deploy the world on each copy operation, then no, I don't think you'd need a CI tool.
This is not to say other reasons may influence you to use a CI tool, testing for instance. Your problem might also be solved by running a polling script on the Unix box to sync the source control with the dev server. I guess the main point is, if you are deploying all non-compiled software, why do you have a separate source control and dev server? You're deployment can be done by a source control tool. If it is only for backup, there are plenty of existing solutions for that problem.
Sean,
Our AnthillPro customers do this kind of thing pretty frequently (and we even do it internally when new content is committed for our website). It's a really good idea, totally appropriate for a CI tool, and you can get quality feedback if you wire in some automated functional / regression tests.
Eric
You could try using Hudson http://hudson-ci.org/
It is easy to configure, is completely GUI (unless you want to go into the details), and has a plugin for Visual Sourcecafe http://wiki.hudson-ci.org/display/HUDSON/Visual+SourceSafe+Plugin
While CI would probably be overkill for what you are trying to do, since Hudson is all GUI and easy to use, you would not spend a lot of time just trying to configure it.
Hudson also has plugins for copying stuff over to other systems, and so it would be easy to deploy your content to another system.
If you are worried about the process, get in touch with a hosted CI provider, such as MikeCI, a quick message on their support board will get you the answer. I don't see why triggering a "build" can't be replaced with copy and paste!

Software similar to Bitbucket that I can self host

Is there a system similar to Bitbucket which I could self host? I've tried to look around in the net to see if there was something but I can't seem to find any. We're using Redmine right now but Redmine doesn't support multiple repositories per project.
Features of Bitbucket that I would like to be able to do would include the ability to fork a repository and to follow someone, make a pull request or something like that.
What are the good Mercurial tools out there?
Thanks a lot
I found something that's nice: you can use rhodecode. It was really nice.
Apparently the Bitbucket people do offer installations for customers, or at least that's what they said on this thread on the bitbucket-users mailing list
They are Git based rather than Mercurial, but the software for GitLab and Gitorious are open source. GitLab may now be a bit easier to setup and use than Gitorious.
Also found a really interesting project called scm manager
There was an early public hosting project called freehg for which the source was available. The site appears down, but the author probably has the source somewhere still.
http://matthewmarshall.org/blog/2008/03/freehg.org/
BitBucket is very nice, but it is not available as download since Atlassian aquired the team.
I'm not sure if you consider commercial products, but Kiln and CodeBeamer can be options to explore:
Issue tracking, wiki, etc. are out of Kiln's scope, so you will need to keep your Redmine as well, what may or may not be an advantage.
The features you mentioned (multiple repo per project, forking, pull requests) are supported by CodeBeamer, plus it is able to replace your Redmine instance completely.
(Disclaimer: Kiln is a FogCreek product, while CodeBeamer is a commercial software developed by our company)