Added git info and docs updates
This commit is contained in:
2
app.rb
2
app.rb
@@ -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
|
||||
|
||||
@@ -8,4 +8,12 @@
|
||||
|
||||
* Одновременно может запускаться только одна сборка.
|
||||
* Сборка потребляет все доступные ядра процессора
|
||||
* На текущий момент система является alpha сборкой, поэтому подавление ошибок не включено, для детального отслеживания ошибок
|
||||
* На текущий момент система является alpha сборкой, поэтому подавление ошибок не включено, для детального отслеживания ошибок
|
||||
|
||||
## Особые указания
|
||||
|
||||
Внизу страницы веб интерфейса есть нижняя панель управления. Там имеется два сервисных пункта меню:
|
||||
|
||||
`Сбросить buildroots` - со временем, при большом количестве сборок, кэш mock-билдера может разрастаться, для освобождения кэшей рекомендуется периодически запускать сброс с помощью данного пункта меню.
|
||||
|
||||
`Подчистка` - проводится инвентаризация гит-проектов и если в базе данных нет записи, то она добавляется. Этот пункт дает возможность подложить гит-проекты и одним нажатием добавить их в веб-интерфейс.
|
||||
BIN
docs/mock-gui/docs/img/mockgui_creategit5_1.png
Normal file
BIN
docs/mock-gui/docs/img/mockgui_creategit5_1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 33 KiB |
BIN
docs/mock-gui/docs/img/mockgui_projects20_1.png
Normal file
BIN
docs/mock-gui/docs/img/mockgui_projects20_1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
BIN
docs/mock-gui/docs/img/mockgui_projects20_2.png
Normal file
BIN
docs/mock-gui/docs/img/mockgui_projects20_2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 35 KiB |
BIN
docs/mock-gui/docs/img/mockgui_projects20_3.png
Normal file
BIN
docs/mock-gui/docs/img/mockgui_projects20_3.png
Normal file
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 репозитория
|
||||
|
||||
Удаление возможно только в том случае, если данный 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>
|
||||
|
||||
Reference in New Issue
Block a user