Skip to content

Commit 4176480

Browse files
committed
Combine get_rev and get_origin into one system call
1 parent 6205320 commit 4176480

File tree

1 file changed

+15
-27
lines changed

1 file changed

+15
-27
lines changed

lib/mix/lib/mix/scm/git.ex

Lines changed: 15 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,12 @@ defmodule Mix.SCM.Git do
2929
case opts[:lock] do
3030
{ :git, lock_repo, lock_rev, lock_opts } ->
3131
File.cd!(opts[:dest], fn ->
32+
rev_info = get_rev_info
3233
cond do
33-
lock_repo != opts[:git] -> :outdated
34+
lock_repo != opts[:git] -> :outdated
3435
lock_opts != get_lock_opts(opts) -> :outdated
35-
lock_rev != get_rev -> :mismatch
36-
lock_repo != get_origin -> :outdated
36+
lock_rev != rev_info[:rev] -> :mismatch
37+
lock_repo != rev_info[:origin] -> :outdated
3738
true -> :ok
3839
end
3940
end)
@@ -97,7 +98,12 @@ defmodule Mix.SCM.Git do
9798
end
9899

99100
defp get_lock(opts, fresh) do
100-
lock = if fresh, do: get_rev, else: get_lock_rev(opts[:lock])
101+
lock = if fresh do
102+
rev_info = get_rev_info
103+
rev_info[:rev]
104+
else
105+
get_lock_rev(opts[:lock])
106+
end
101107
{ :git, opts[:git], lock, get_lock_opts(opts) }
102108
end
103109

@@ -122,29 +128,11 @@ defmodule Mix.SCM.Git do
122128
end
123129
end
124130

125-
defp get_rev do
126-
check_rev System.cmd('git rev-parse --verify --quiet HEAD')
127-
end
128-
129-
defp check_rev([]), do: nil
130-
defp check_rev(list), do: check_rev(list, [])
131-
132-
defp check_rev([h|t], acc) when h in ?a..?f or h in ?0..?9 do
133-
check_rev(t, [h|acc])
134-
end
135-
136-
defp check_rev(fin, acc) when fin == [?\n] or fin == [] do
137-
Enum.reverse(acc) |> iolist_to_binary
138-
end
139-
140-
defp check_rev(_, _) do
141-
nil
142-
end
143-
144-
defp get_origin do
145-
System.cmd('git config remote.origin.url')
146-
|> :string.strip(:right, ?\n)
147-
|> iolist_to_binary
131+
defp get_rev_info do
132+
[origin, rev] = System.cmd('git config remote.origin.url && git rev-parse --verify --quiet HEAD')
133+
|> iolist_to_binary
134+
|> String.split("\n", trim: true)
135+
[ origin: origin, rev: rev ]
148136
end
149137

150138
defp update_origin(location) do

0 commit comments

Comments
 (0)