summaryrefslogtreecommitdiff
path: root/.html/git/integrate.html
blob: 828019f27a09694e150a8162f357fc259bbb4851 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<!DOCTYPE html>
<html>
<head>
	<title>
		The Codex » 
		Integrating with Git: A Field Guide
	</title>

	<link
		rel='stylesheet'
		type='text/css'
		href='http://fonts.googleapis.com/css?family=Buenard:400,700&amp;subset=latin,latin-ext'>
	<link
		rel="stylesheet"
		type="text/css"
		href="../media/css/reset.css">
	<link
		rel="stylesheet"
		type="text/css"
		href="../media/css/grimoire.css">
</head>
<body>

<div id="shell">
	
		<ol id="breadcrumbs">
			
				<li class="crumb-0 not-last">
					
						<a href="../">index</a>
					
				</li>
			
				<li class="crumb-1 not-last">
					
						<a href="./">git</a>
					
				</li>
			
				<li class="crumb-2 last">
					
						integrate
					
				</li>
			
		</ol>
	

	
	<div id="article">
		<h1 id="integrating-with-git-a-field-guide">Integrating with Git: A Field Guide</h1>
<p>Pretty much everything you might want to do to a Git repository when writing
tooling or integrations should be done by shelling out to one <code>git</code> command or
another.</p>
<h2 id="finding-gits-trees">Finding Git's trees</h2>
<p>Git commands can be invoked from locations other than the root of the work
tree or git directory. You can find either of those by invoking <code>git
rev-parse</code>.</p>
<p>To find the absolute path to the root of the work tree:</p>
<pre><code>git rev-parse --show-toplevel
</code></pre>
<p>This will output the absolute path to the root of the work tree on standard
output, followed by a newline. Since the work tree's absolute path can contain
whitespace (including newlines), you should assume every byte of output save
the final newline is part of the path, and if you're using this in a shell
script, quote defensively.</p>
<p>To find the relative path from the current working directory:</p>
<pre><code>git rev-parse --show-cdup
</code></pre>
<p>This will output the relative path to the root of the work tree on standard
output, followed by a newline.</p>
<p>For bare repositories, both commands will output nothing and exit with a zero
status. (Surprise!)</p>
<p>To find <em>a</em> path to the root of the git directory:</p>
<pre><code>git rev-parse --git-dir
</code></pre>
<p>This will output either the relative or the absolute path to the git
directory, followed by a newline.</p>
<p>All three of these commands will exit with non-zero status when run outside of
a work tree or git directory. Check for it.</p>
	</div>


	
<div id="comments">
<div id="disqus_thread"></div>
<script type="text/javascript">
    /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
    var disqus_shortname = 'grimoire'; // required: replace example with your forum shortname

    /* * * DON'T EDIT BELOW THIS LINE * * */
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
</div>


	
	<div id="footer">
		<p>
			
				The Codex —
			
			Powered by <a href="http://markdoc.org/">Markdoc</a>.
			
<a href="https://bitbucket.org/ojacobson/grimoire.ca/src/master/wiki/git/integrate.md">See this page on Bitbucket</a> (<a href="https://bitbucket.org/ojacobson/grimoire.ca/history-node/master/wiki/git/integrate.md">history</a>).

		</p>
	</div>
	
</div>
</body>
</html>