Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
H
Hdlmake
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
15
Issues
15
List
Board
Labels
Milestones
Merge Requests
2
Merge Requests
2
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
Hdlmake
Commits
314e9a61
Commit
314e9a61
authored
Oct 28, 2019
by
Tristan Gingold
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
git.py: minor refactoring.
parent
a2c8a6df
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
56 additions
and
60 deletions
+56
-60
git.py
hdlmake/fetch/git.py
+53
-57
module.py
hdlmake/module/module.py
+3
-3
No files found.
hdlmake/fetch/git.py
View file @
314e9a61
...
...
@@ -38,20 +38,7 @@ class Git(Fetcher):
def
__init__
(
self
):
self
.
submodule
=
False
@
staticmethod
def
get_git_toplevel
(
module
):
"""Get the top level for the Git repository"""
cur_dir
=
os
.
getcwd
()
try
:
os
.
chdir
(
path_utils
.
rel2abs
(
module
.
path
))
if
not
os
.
path
.
exists
(
".gitmodules"
):
return
None
return
shell
.
run
(
"git rev-parse --show-toplevel"
)
finally
:
os
.
chdir
(
cur_dir
)
@
staticmethod
def
get_submodule_commit
(
submodule_dir
):
def
get_submodule_commit
(
self
,
submodule_dir
):
"""Get the commit for a repository if defined in Git submodules"""
status_line
=
shell
.
run
(
"git submodule status
%
s"
%
submodule_dir
)
status_line
=
status_line
.
split
()
...
...
@@ -99,51 +86,60 @@ class Git(Fetcher):
module
.
path
=
mod_path
return
True
@
staticmethod
def
get_git_submodules
(
module
):
"""Get a dictionary containing the git submodules
that are listed in the module's path"""
submodule_dir
=
path_utils
.
rel2abs
(
module
.
path
)
if
module
.
isfetched
==
False
:
logging
.
debug
(
"Cannot check submodules, module
%
s is not fetched"
,
submodule_dir
)
return
{}
logging
.
debug
(
"Checking git submodules in
%
s"
,
submodule_dir
)
cur_dir
=
os
.
getcwd
()
try
:
os
.
chdir
(
submodule_dir
)
if
not
os
.
path
.
exists
(
".gitmodules"
):
return
{}
config_submodules
=
{}
config_content
=
Popen
(
"git config -f .gitmodules --list"
,
stdout
=
PIPE
,
stdin
=
PIPE
,
close_fds
=
not
shell
.
check_windows_tools
(),
shell
=
True
)
config_lines
=
[
line
.
strip
()
.
decode
(
'utf-8'
)
for
line
in
config_content
.
stdout
.
readlines
()]
config_submodule_lines
=
[
line
for
line
in
config_lines
if
line
.
startswith
(
"submodule"
)]
for
line
in
config_submodule_lines
:
line_split
=
line
.
split
(
"="
)
lhs
=
line_split
[
0
]
rhs
=
line_split
[
1
]
lhs_split
=
lhs
.
split
(
"."
)
module_name
=
'.'
.
join
(
lhs_split
[
1
:
-
1
])
if
module_name
not
in
config_submodules
:
config_submodules
[
module_name
]
=
{}
config_submodules
[
module_name
][
lhs_split
[
-
1
]]
=
rhs
class
GitSM
(
Git
):
def
__init__
(
self
):
self
.
submodule
=
True
if
len
(
list
(
config_submodules
))
>
0
:
logging
.
info
(
"Found git submodules in
%
s:
%
s"
,
module
.
path
,
str
(
config_submodules
))
finally
:
os
.
chdir
(
cur_dir
)
return
config_submodules
def
get_git_toplevel
(
module
):
"""Get the top level for the Git repository"""
cur_dir
=
os
.
getcwd
()
try
:
os
.
chdir
(
path_utils
.
rel2abs
(
module
.
path
))
if
not
os
.
path
.
exists
(
".gitmodules"
):
return
None
return
shell
.
run
(
"git rev-parse --show-toplevel"
)
finally
:
os
.
chdir
(
cur_dir
)
class
GitSM
(
Git
):
def
get_git_submodules
(
module
):
"""Get a dictionary containing the git submodules
that are listed in the module's path"""
submodule_dir
=
path_utils
.
rel2abs
(
module
.
path
)
if
module
.
isfetched
==
False
:
logging
.
debug
(
"Cannot check submodules, module
%
s is not fetched"
,
submodule_dir
)
return
{}
logging
.
debug
(
"Checking git submodules in
%
s"
,
submodule_dir
)
cur_dir
=
os
.
getcwd
()
try
:
os
.
chdir
(
submodule_dir
)
if
not
os
.
path
.
exists
(
".gitmodules"
):
return
{}
config_submodules
=
{}
config_content
=
Popen
(
"git config -f .gitmodules --list"
,
stdout
=
PIPE
,
stdin
=
PIPE
,
close_fds
=
not
shell
.
check_windows_tools
(),
shell
=
True
)
config_lines
=
[
line
.
strip
()
.
decode
(
'utf-8'
)
for
line
in
config_content
.
stdout
.
readlines
()]
config_submodule_lines
=
[
line
for
line
in
config_lines
if
line
.
startswith
(
"submodule"
)]
for
line
in
config_submodule_lines
:
line_split
=
line
.
split
(
"="
)
lhs
=
line_split
[
0
]
rhs
=
line_split
[
1
]
lhs_split
=
lhs
.
split
(
"."
)
module_name
=
'.'
.
join
(
lhs_split
[
1
:
-
1
])
if
module_name
not
in
config_submodules
:
config_submodules
[
module_name
]
=
{}
config_submodules
[
module_name
][
lhs_split
[
-
1
]]
=
rhs
if
len
(
list
(
config_submodules
))
>
0
:
logging
.
info
(
"Found git submodules in
%
s:
%
s"
,
module
.
path
,
str
(
config_submodules
))
finally
:
os
.
chdir
(
cur_dir
)
return
config_submodules
def
__init__
(
self
):
self
.
submodule
=
True
hdlmake/module/module.py
View file @
314e9a61
...
...
@@ -34,7 +34,7 @@ import logging
from
..util
import
path
as
path_mod
from
..util
import
shell
from
..fetch
.git
import
G
it
from
..fetch
import
g
it
from
..manifest_parser.manifestparser
import
ManifestParser
import
six
...
...
@@ -264,8 +264,8 @@ class Module(object):
"""Get the submodules if found in the Manifest path"""
if
not
self
.
source
==
'gitsm'
:
return
git_submodule_dict
=
G
it
.
get_git_submodules
(
self
)
git_toplevel
=
G
it
.
get_git_toplevel
(
self
)
git_submodule_dict
=
g
it
.
get_git_submodules
(
self
)
git_toplevel
=
g
it
.
get_git_toplevel
(
self
)
for
submodule_key
in
git_submodule_dict
.
keys
():
url
=
git_submodule_dict
[
submodule_key
][
"url"
]
path
=
git_submodule_dict
[
submodule_key
][
"path"
]
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment