Added git info and docs updates

master
Alexey Berezhok 3 days ago
parent d098ffd3d0
commit 4d0b237127

@ -1150,7 +1150,7 @@ get "/buildinfofraw" do
if params["file"].nil? || !File.exist?(params["file"])
print_error_page(503, "Файл не найден")
else
if File.binary?(params["file"]) && params["file"].start_with?(File.join(Dir.pwd(), cfg.get_projects_path))
if !File.binary?(params["file"]) && params["file"].start_with?(File.join(Dir.pwd(), cfg.get_projects_path))
f_name = File.basename(params["file"])
send_file(params["file"], :filename => f_name, :type => "application/octet-stream", :disposition => 'attachment')
else

@ -72,6 +72,24 @@ class GitRepo
repos_data
end
def git_walker(repo, tree, dir_name, result)
tree.each_tree do |entry|
new_tree = repo.lookup(entry[:oid])
result = git_walker(repo, new_tree, "#{dir_name}/#{entry[:name]}", result)
end
tree.each_blob { |entry| result << "#{dir_name}/#{entry[:name]}" }
result
end
def get_git_tree(repo, ref, result)
tree = ref.target.tree
result = git_walker(repo, tree, "", result)
end
def repo_info(reponame, branch = nil)
info = {}
result = ""
@ -97,6 +115,7 @@ class GitRepo
info[:commits] = []
info[:branches] = []
info[:tags] = []
info[:files] = []
else
ref = repo.head
unless branch.nil?
@ -104,6 +123,7 @@ class GitRepo
ref = repo.references[ref_name]
end
commits = []
files = []
unless ref.nil?
walker = Rugged::Walker.new(repo)
walker.sorting(Rugged::SORT_DATE)
@ -111,10 +131,15 @@ class GitRepo
commits = walker.map do |commit|
{ :message => commit.message, :author => commit.author, :time => commit.time, :sha => commit.oid }
end.first(10)
unless ref.target.nil? && ref.target.tree.nil?
files = get_git_tree(repo, ref, files)
end
end
info[:commits] = commits
info[:branches] = repo.branches.each_name(:local).sort
info[:tags] = repo.tags.map { |tag| tag.name }
info[:files] = files
end
else
@error = result

@ -9,3 +9,11 @@
* Одновременно может запускаться только одна сборка.
* Сборка потребляет все доступные ядра процессора
* На текущий момент система является alpha сборкой, поэтому подавление ошибок не включено, для детального отслеживания ошибок
## Особые указания
Внизу страницы веб интерфейса есть нижняя панель управления. Там имеется два сервисных пункта меню:
`Сбросить buildroots` - со временем, при большом количестве сборок, кэш mock-билдера может разрастаться, для освобождения кэшей рекомендуется периодически запускать сброс с помощью данного пункта меню.
`Подчистка` - проводится инвентаризация гит-проектов и если в базе данных нет записи, то она добавляется. Этот пункт дает возможность подложить гит-проекты и одним нажатием добавить их в веб-интерфейс.

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 74 KiB

@ -25,6 +25,7 @@
* Списка тегов
* Строки для клонирования репозитория
* Описание репозитория
* Списка файлов указанной ветки репозитория
Список тегов и коммитов даст информацию о том, что исходные коды в ветке master находятся в нужно состоянии ис нужными коммитами.
Сборочница производит выборку исходных кодов из master ветки git репозитория.
@ -37,6 +38,10 @@
Для успешного клонирования и наполнения git репозитория, необходимо либо установить публичный ключ для доступа пользователя по ssh или знать пароль к mockgui пользователю по ssh. Вот почему в [инсталляционном руководстве](../install.md) рекомендуется установить пароль для mockgui пользователя.
Вкладка отображения списка файлов репозитория и указанной ветки или HEAD:
![Информация о git репозитории](../img/mockgui_creategit5_1.png)
## Удаление git репозитория
Удаление возможно только в том случае, если данный git репозиторий не имеет ни рецептов сборки, а так же не подключен ни к одному проекту и соответственно, не имеет сборок, указывающих на данный git репозиторий.

@ -6,6 +6,7 @@
<li class="nav-item" role="presentation"><a class="nav-link" role="tab" data-bs-toggle="tab" href="#tab-2">Список коммитов</a></li>
<li class="nav-item" role="presentation"><a class="nav-link" role="tab" data-bs-toggle="tab" href="#tab-3">Список тэгов</a></li>
<li class="nav-item" role="presentation"><a class="nav-link" role="tab" data-bs-toggle="tab" href="#tab-4">Клонировать</a></li>
<li class="nav-item" role="presentation"><a class="nav-link" role="tab" data-bs-toggle="tab" href="#tab-5">Список файлов</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" role="tabpanel" id="tab-1">
@ -123,6 +124,34 @@
</div>
</div>
</div>
<div class="tab-pane" role="tabpanel" id="tab-5">
<div class="container">
<div class="row align-items-start">
<div class="col-10">
<p style="font-weight: bold;"><%= @repo_data[:info][:reponame] %></p>
</div>
</div>
<div class="row align-items-start">
<div class="col-4" style="background: #d3e2ff;border-radius: 15px;padding-top: 20px;padding-bottom: 20px;">
<p>
<% if @repo_data[:info][:descr].nil? || @repo_data[:info][:descr] == "" %>
"Нет описания"
<% else %>
<%= @repo_data[:info][:descr] %>
<% end %>
</p>
</div>
<div class="col-6">
<p style="color: var(--bs-red);">Список файлов</p>
<ul>
<% @repo_data[:files].each do |tags| %>
<li><%= tags %></li>
<% end %>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

Loading…
Cancel
Save