<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">

<head profile="http://gmpg.org/xfn/11">
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>gitguru</title>
	<link rel="canonical" href="https://gitguru.com" />
	<link rel="icon" href="images/rss_icon.png">
	<link rel="stylesheet" href="wp-content/themes/skimmedmilk/style.css" type="text/css" media="all" />
	<link rel="stylesheet" href="wp-content/themes/skimmedmilk/print.css" type="text/css" media="print" />
	<link rel="pingback" href="https://gitguru.com/xmlrpc.php" />
	<link rel="stylesheet" id="contact-form-7-css" href="wp-content/plugins/contact-form-7/styles_ver-2.3.1.css"
		type="text/css" media="all" />
	<script type="text/javascript" src="wp-includes/js/jquery/jquery_ver-1.4.2.js"></script>
	<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://gitguru.com/xmlrpc.php?rsd" />
	<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://gitguru.com/wp-includes/wlwmanifest.xml" />
	<link rel="index" title="gitguru" href="https://gitguru.com/" />
	<meta name="generator" content="WordPress 3.0.1" />
	<link rel="shortlink" href="https://wp.me/qCxu" />
	<script type="text/javascript">
		//<![CDATA[
		var _wpcf7 = { cached: 1 };
		//]]>
	</script>
	<link rel="shortcut icon" href="https://gitguru.com/favicon.ico" type="image/x-icon" /><!-- Favi -->
	<link rel="stylesheet" href="wp-content/plugins/wp-syntax/wp-syntax.css" type="text/css" media="screen" />
</head>

<body>
	<div id="page">
		<div id="header">
			<h1><a href="/" title="gitguru home">gitguru</a></h1>
			<small>meditations on scm using git</small>
		</div><!-- header -->
		<div id="content">
			<div class="navigation">
				<div class="alignleft"></div>
				<div class="snap-to-fit"></div>
			</div><!-- navigation -->
			<div class="post">
				<h2 id="post-220"><a href="2009/03/18/git-enterprise-requirements/" rel="bookmark"
						title="Permanent link to 'Git Enterprise Requirements'">Git Enterprise Requirements</a></h2>
				<small>March 18th, 2009</small>
				<div class="entry">
					<p>If you’re an individual developer or a small team, I wouldn’t think twice before recommending
						using Git.</p>
					<p>But beyond that I have some reservations. At least for where Git is right now.</p>
					<p>That hesitation is from the experience I’ve gained from performing start-to-finish installations
						of enterprise-class SCM tools including <a
							href="http://www-01.ibm.com/software/awdtools/clearcase/">IBM Rational ClearCase</a> and <a
							href="http://www.ca.com/us/products/product.aspx?ID=255">CA Software Change Manager</a>.
						What separates these tools from Git (and SVN) is that they address processes and workflows,
						security and roles. And the enterprise world is all about that.</p>
					<p>A standard installation of Git, on the other hand, is a blank slate. You can do what you will
						with it. Which is great for a developer who dreams of having that flexibility but gives SCM
						admins nightmares because they usually have to clean up whatever goes horribly wrong.</p>
					<p>What allows Git to have a chance of making serious inroads into the enterprise world is that it’s
						open, relies on standard mechanisms such as ssh and has a <a
							href="http://www.kernel.org/pub/software/scm/git/docs/githooks.html">hook system</a> that is
						triggered by actions on a repository. New functionality can be constructed around the version
						engine core.</p>
					<p>So what exactly does Git need to have built around it?</p>
					<p>My minimum set of requirements would include</p>
					<h4>1. Security and Access Control</h4>
					<p>Git punts on security and relies directly on the OS/filesystem and transport protocol (git:,
						http:, or ssh:) to control read and write access to repositories. And current add-ons such as <a
							href="http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way">gitosis</a>
						only address access at the repository level, not the level of branches, tags, etc.</p>
					<p>Implementation of a unified security and a fine-grain access/locking mechanism is an absolute
						necessity before Git can be even considered as a serious enterprise tool.</p>
					<h4>2. Integration with the &#8220;typical&#8221; Development Environment</h4>
					<p>My experience with Git is with <a href="http://rubyonrails.org/">Rails</a> and Mac OS X and
						Linux. While this isn’t unusual in the startup world, it’s not the &#8220;typical&#8221;
						enterprise development environment. That instead would be Visual Studio or an Eclipse-based IDE
						on Windows.</p>
					<p>We need to support projects such as</p>
					<ul>
						<li> <a href="https://code.google.com/p/msysgit/">msysgit</a> - a native Windows implementation
							of Git</li>
						<li><a href="http://www.jgit.org/">JGit</a> - a Java GIT library implementation</li>
						<li><a href="https://code.google.com/p/egit/">EGit</a> - an Eclipse plugin based on JGit</li>
					</ul>
					<p>if Git is to gain traction in the enterprise.</p>
					<h4>3. Repository Visualization</h4>
					<p>If you have development of even the slightest complexity, having a visual tool to view the branch
						structure and where commits are located is a necessity. Some existing GUI interfaces include:
					</p>
					<ul>
						<li><a href="http://www.kernel.org/pub/software/scm/git/docs/git-gui.html">git-gui</a>
							(multi-platform tcl/tk)</li>
						<li><a href="http://www.kernel.org/pub/software/scm/git/docs/gitk.html">gitk</a> (multi-platform
							tcl/tk)</li>
						<li><a href="http://git.kernel.org/?p=qgit/qgit4.git;a=summary">qgit</a> (multi-platform Qt)
						</li>
						<li><a href="http://gitx.frim.nl/">GitX</a> (Mac OS X)</li>
						<li><a href="https://code.google.com/p/gitextensions/">Git Extensions</a> (Windows)</li>
					</ul>
					<p>These tools, however, work on just local repositories. Remote repository branching is only seen
						if you’ve fetched the information.</p>
					<p>An enterprise tool will need to start from any &#8220;canonical&#8221; shared repository and then
						add branching information from local developer repositories in order to show the extended branch
						network. This would provide a visualization of the development taking place across the
						organization.</p>
					<h4>4. Example Workflows</h4>
					<p>Git doesn’t mandate any particular development workflow. Even the de-facto standard <a href="https://github.com/guides/pull-requests">pull-request</a> method of sharing updates is
						really a suggestion rather than an enforceable process (unless you’re working under a <a
							href="http://www.wired.com/wired/archive/11.11/linus_pr.html">benevolent dictatorship</a>).
					</p>
					<p>Unfortunately you’re going to find that given <em>n</em> developers, you’ll likely see a minimum
						of <em>n+1</em> ways of using a tool.</p>
					<p>Example enforceable workflows for common practices including agile development, lifecycle
						management and deployment need to be created via the hook mechanism and made widely available.
						An enterprise SCM team can then use these workflows as a starting point for customizing their
						Git installation.</p>
					<h4>5. Simplified Administration</h4>
					<p>Installing and using Git for a local repository is reasonably straightforward. Configuring a
						repository for remote access is a bit more complicated:</p>
					<ul>
						<li>How do I create a bare repository from an existing one?</li>
						<li>Which protocol should I use? git, http, or ssh?</li>
						<li>How do I restrict access?</li>
						<li>How do I add and identify repository users?</li>
						<li>What happens if I need to add a new repository?</li>
					</ul>
					<p>And if you have to host any appreciable number or sizeable sets of repositories, you need to
						start worrying about storage, load, and backups.</p>
					<p>So is this at all possible? Can an enterprise-ready tool be built around a Git core?</p>
					<p>Absolutely yes.</p>
					<p>If you have any doubts, you just need to look at what <a href="https://github.com/">GitHub</a> has
						done with simplifying repository creation/forking, security and collaboration setup, and tools
						for visualizing the development network. Or how <a href="https://heroku.com/">Heroku</a> has made
						Git a part of the <a href="https://heroku.com/docs#toc1">application deployment process</a>.</p>
					<p>It’s just really a question of when someone’s going to put it all together for the enterprise.
					</p>
				</div><!-- entry -->
				<p class="postmetadata">Posted in <a href="category/enterprise/" title="View all posts in enterprise"
						rel="category tag">enterprise</a> by <a href="author/long/">long</a> <strong>|</strong> Tagged
					<a href="tag/enterprise/" rel="tag">enterprise</a>, <a href="tag/scm/" rel="tag">scm</a>, <a
						href="tag/security/" rel="tag">security</a>, <a href="tag/workflow/" rel="tag">workflow</a>
					<strong>|</strong>
					<span class="nowrap"><a href="2009/03/18/git-enterprise-requirements/#comments"
							title="Comment on Git Enterprise Requirements">24 responses &raquo;</a></span>
				</p>
				<!--
					<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
			xmlns:dc="http://purl.org/dc/elements/1.1/"
			xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
		<rdf:Description rdf:about="https://gitguru.com/2009/03/18/git-enterprise-requirements/"
    dc:identifier="https://gitguru.com/2009/03/18/git-enterprise-requirements/"
    dc:title="Git Enterprise Requirements"
    trackback:ping="https://gitguru.com/2009/03/18/git-enterprise-requirements/trackback/" />
</rdf:RDF>					-->
			</div><!-- post -->
			<div class="navigation">
				<div class="alignright"><a href="page/2/">Earlier posts &raquo;</a></div>
				<div class="snap-to-fit"></div>
			</div><!-- navigation -->
		</div><!-- content -->
		<div id="sidebar">
			<ul>
				<!--WP Widget Cache 0.25.3 (http://www.nexwp.com) Begin -->
				<li id="text-341542991" class="widget widget_text">
					<div class="textwidget"><a href="http://feeds2.feedburner.com/gitguru"><img
								src="images/rss_icon.png" alt="RSS" /></a>&nbsp;<a
							href="http://feeds2.feedburner.com/gitguru">SUBSCRIBE</a></div>
				</li>
				<!-- WP Widget Cached text-341542991 For 14400 second(s)-->
				<!--WP Widget Cache End -->
				<!--WP Widget Cache 0.25.3 (http://www.nexwp.com) Begin -->
				<li id="text-344991151" class="widget widget_text">
					<div class="textwidget">
						<h2><a href="about/">ABOUT</a></h2>
						<h2><a href="ask-the-guru/">ASK THE GURU</a></h2>
					</div>
				</li>
				<!-- WP Widget Cached text-344991151 For 14400 second(s)-->
				<!--WP Widget Cache End -->
				<li id="recent-posts-2" class="widget widget_recent_entries">
					<h2 class="widgettitle">Recent Posts</h2>
					<ul>
						<li><a href="2009/03/18/git-enterprise-requirements/" title="Git Enterprise Requirements">Git
								Enterprise Requirements</a></li>
						<li><a href="2009/02/22/integrating-git-with-a-visual-merge-tool/"
								title="Integrating Git with a Visual Merge Tool">Integrating Git with a Visual Merge
								Tool</a></li>
						<li><a href="2009/02/18/branching-strategies-overview/"
								title="Branching Strategies in Git – Overview">Branching Strategies in Git -
								Overview</a></li>
						<li><a href="2009/02/03/rebase-v-merge-in-git/" title="Rebase v Merge in Git">Rebase v Merge in
								Git</a></li>
						<li><a href="2009/01/29/git-is-just-a-tool/" title="Git is just a tool">Git is just a tool</a>
						</li>
					</ul>
				</li>
				<!--WP Widget Cache 0.25.3 (http://www.nexwp.com) Begin -->
				<li id="skimmed-archives" class="widget skimmed_milk_archive_widget">
					<h2 class="widgettitle">Archives</h2>
					<ul>
						<li><a href="2009/03/" title="March 2009">March 2009</a></li>
						<li><a href="2009/02/" title="February 2009">February 2009</a></li>
						<li><a href="2009/01/" title="January 2009">January 2009</a></li>
					</ul>
				</li>
				<!-- WP Widget Cached skimmed-archives For 3600 second(s)-->
				<!--WP Widget Cache End -->
				<li id="skimmed-search" class="widget skimmed_milk_search_widget">
					<form method="get" id="searchform" action="/">
						<div>
							<input type="text" value="" name="s" class="s" tabindex="1" /><br />
							<p id="submitsearch">
								<script type="text/javascript">
									var textNode = document.createTextNode("Search")
									var link = document.createElement("a")
									link.setAttribute("title", "Search all posts")
									link.setAttribute("href", "javascript:document.getElementById('searchform').submit();")
									link.appendChild(textNode)
									var div = document.getElementById("submitsearch")
									div.appendChild(link)
								</script>
							</p>
							<noscript>
								<p><input type="submit" tabindex="2" value="Search" /></p>
							</noscript>
						</div>
					</form>
				</li>
				<h2 class="widget-title">Sponsored</h2>
						<ul>
							<li><a href="https://104.248.151.231/">MPO100</a></li>
                        <li><a href="https://mpo100.uk.com">MPO100</a></li>
                        <li><a href="https://mpo100.in.net">mpo100 daftar</a></li>
                        <li><a href="https://mpo100.co.uk">mpo100 login</a></li>
                        <li><a href="https://mpo800.id">MPO800</a></li>
                        <li><a href="https://178.128.222.152/">MPO800</a></li>
                        <li><a href="https://www.mpb-ks.org">UG100</a></li>
                        <li><a href="https://www.redtimes.org/">UG100</a></li>
                        <li><a href="https://www.smithfield-virginia.com">PRAGMATIC555</a></li>
                        <li><a href="https://naguri-canoe.com">UG555</a></li>
                        <li><a href="https://146.190.97.202/">UG808</a></li>
                        <li><a href="https://mpobos.id">MPOBOS</a></li>
                        <li><a href="https://mpo19hot.com">MPO19</a></li>
                        <li><a href="https://www.mpo22.org">MPO22</a></li>
                        <li><a href="https://mpo1771.org">MPO1771</a></li>
                        <li><a href="https://www.mpo1331.com">MPO1331</a></li>
                        <li><a href="https://www.mpo1991.org">MPO1991</a></li>
                        <li><a href="https://mpo001.net">MPO001</a></li>
                        <li><a href="https://mpo400.org">MPO400</a></li>
                        <li><a href="https://mpo600.net">MPO600</a></li>
                        <li><a href="https://www.mpo900.it.com">MPO900</a></li>
                        <li><a href="https://mpo909.com">MPO909</a></li>
                        <li><a href="https://mpo444.it.com">MPO444</a></li>
                        <li><a href="https://mpo33.id">MPO33</a></li>
                        <li><a href="https://mpo1000.org">MPO1000</a></li>
                        <li><a href="https://mpo5000.id">MPO5000</a></li>
                        <li><a href="https://www.canceractionnow.org">MPO200</a></li>
                        <li><a href="https://159.89.195.140/">MPO200</a></li>
                        <li><a href="https://www.jago200.org">JAGO200</a></li>
                        <li><a href="https://jago200.net">JAGO200</a></li>
                        <li><a href="https://mpo123.id">MPO123</a></li>
                        <li><a href="https://mpo128.id">MPO128</a></li>
                        <li><a href="https://mpo138.id">MPO138</a></li>
                        <li><a href="https://mpo838.id">MPO838</a></li>
                        <li><a href="https://www.mpo828.org">MPO828</a></li>
                        <li><a href="https://www.mpo787.org">MPO787</a></li>
                        <li><a href="https://www.mpoqq.net">MPOQQ</a></li>
                        <li><a href="https://www.mpomaxwin.net">MPOMAXWIN</a></li>
                        <li><a href="https://www.mpokataslot.org">MPOKATASLOT</a></li>
                        <li><a href="https://mpotop88.com">MPOTOP88</a></li>
                        <li><a href="https://mpozeus.com">MPOZEUS</a></li>
                        <li><a href="https://mpoindo.org">MPOINDO</a></li>
                        <li><a href="https://www.mpohoki.org">MPOHOKI</a></li>
                        <li><a href="https://www.cpo333.org">CPO333</a></li>
                        <li><a href="https://ragambet.org">RAGAMBET</a></li>
                        <li><a href="https://opposlot.org">OPPOSLOT</a></li>
                        <li><a href="https://mgo555.com">MGO555</a></li>
                        <li><a href="https://qq1881.org">QQ1881</a></li>
                        <li><a href="https://indo787.com">INDO787</a></li>
                        <li><a href="https://lgo333.com">LGO333</a></li>
                        <li><a href="https://www.ayojudi.org">AYOJUDI</a></li>
                        <li><a href="https://jiwaplay.com">JIWAPLAY</a></li>
                        <li><a href="https://www.ceria88.com">CERIA88</a></li>
                        <li><a href="https://www.grand188.id">GRAND188</a></li>
                        <li><a href="https://www.vipslot188.org">VIPSLOT88</a></li>
                        <li><a href="https://megalapak.org">MEGALAPAK</a></li>
                        <li><a href="https://mari2bet.com">MARI2BET</a></li>
                        <li><a href="https://mari2boss.org">MARI2BOSS</a></li>
                        <li><a href="https://www.planethoki.net">PLANETHOKI</a></li>
                        <li><a href="https://www.aggressionen-abbauen.com/literaturempfehlungen/">depo 5k</a>
                        </li>
                        <li><a href="https://heylink.me/ug">kumpulan situs ug</a></li>
                        <li><a href="https://www.canceractionnow.org">slot gacor</a></li>
                        <li><a href="https://www.jago200.org">slot gacor hari ini</a></li>
                        <li><a href="https://adoraskin.id">klinik kecantikan semarang</a></li>
                        <li><a href="https://adoraskin.id">klinik terbaik semarang</a></li>
                        <li><a href="https://www.greenpapayaartprojects.org/">deposit qris</a></li>
                        <li><a href="https://patronsecure.com/">situs maxwin</a></li>
                        <li><a href="https://www.pejabattogel.net">PEJABATTOGEL</a></li>
                        <li><a href="https://www.sjo888.com">SJO888</a></li>
                        <li><a href="https://taz969.org">TAZ969</a></li>
                        <li><a href="https://ceri138.org">CERI138</a></li>
                        <li><a href="https://topslot777.com">TOPSLOT777</a></li>
                        <li><a href="https://qq777.id">QQ777</a></li>
                        <li><a href="https://qq888.id">QQ888</a></li>
                        <li><a href="https://www.qqmegawin77.net">QQMEGAWIN77</a></li>
                        <li><a href="https://www.dewahoki888.com">DEWAHOKI888</a></li>
						<li><a href="https://x188bet.org">X188BET</a></li>
                        <li><a href="https://ugmaxwin.org">UGMAXWIN</a></li>
                        <li><a href="https://188.166.204.233/">SURGA11</a></li>
                        <li><a href="https://178.128.83.188">SURGA22</a></li>
                        <li><a href="https://178.128.117.46">SURGA33</a></li>
                        <li><a href="https://157.230.244.157">SURGA55</a></li>
                        <li><a href="https://152.42.202.220">SURGA77</a></li>
                        <li><a href="https://165.245.145.19">SURGA88</a></li>
                        <li><a href="https://178.128.107.247">SURGA99</a></li>
                        <li><a href="https://165.245.182.234">SURGA5000</a></li>
                        <li><a href="https://206.189.95.81">SURGAVIP</a></li>
                        <li><a href="https://178.128.18.240">SURGAPLAY</a></li>
						</ul>
			</ul>
		</div><!-- sidebar -->
		<div id="footer">
			<p><small>
					<a href="/" title="gitguru home page">gitguru</a> is powered by <a href="http://wordpress.org/"
						title="Wordpress open source blogging software">WordPress</a> </small></p>
		</div><!-- footer -->
		<div class="snap-to-fit"></div>
	</div><!-- page -->
	<script type="text/javascript" src="wp-includes/js/jquery/jquery.form_ver-2.02m.js"></script>
	<script type="text/javascript" src="wp-content/plugins/contact-form-7/scripts_ver-2.3.1.js"></script>
	<!--stats_footer_test-->
	<script src="e-201252.js" type="text/javascript"></script>
	<script type="text/javascript">
		st_go({ blog: '6344676', v: 'ext', post: '0' });
		var load_cmc = function () { linktracker_init(6344676, 0, 2); };
		if (typeof addLoadEvent != 'undefined') addLoadEvent(load_cmc);
		else load_cmc();
	</script>
</body>

</html>
<!-- Dynamic page generated in 0.148 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-01-01 12:41:03 -->
<!-- super cache -->