return 1;
}
using namespace git2wrap; // NOLINT
const libgit2 libgit;
for (const auto& repo_path : args.repos) {
try {
const std::string repo_name = repo_path.stem().string();
repository repo(nullptr);
try {
const git2wrap::libgit2 libgit;
std::vector<startgit::repository> repos;
// open all repositories
for (const auto& repo_path : args.repos) {
try {
repo = repository::open(
repo_path.c_str(), GIT_REPOSITORY_OPEN_NO_SEARCH, nullptr);
repos.emplace_back(repo_path);
} catch (const git2wrap::error& err) {
std::cerr << std::format("Warning: {} is not a repository\n",
repo_name);
continue;
repo_path.string());
}
}
for (const auto& repo : repos) {
for (const auto& branch : repo.get_branches()) {
std::filesystem::create_directory(args.output_dir / repo.get_name());
for (auto it = repo.branch_begin(GIT_BRANCH_LOCAL);
it != repo.branch_end();
++it)
{
const std::string filename = it->get_name() + "_log.html";
std::filesystem::create_directory(args.output_dir / repo_name);
std::ofstream ofs(args.output_dir / repo_name / filename);
const std::string filename = branch.get_name() + "_log.html";
std::ofstream ofs(args.output_dir / repo.get_name() / filename);
revwalk rwalk(repo);
git2wrap::revwalk rwalk(repo.get());
const object obj = repo.revparse(it->get_name().c_str());
const git2wrap::object obj =
repo.get().revparse(branch.get_name().c_str());
rwalk.push(obj.get_id());
write_header(ofs, repo_name, it->get_name(), "Dimitrije Dobrota");
write_header(ofs,
repo.get_name(),
branch.get_name(),
repo.get_owner(),
repo.get_description());
write_commit_table(ofs, rwalk);
write_footer(ofs);
}
} catch (const git2wrap::error& err) {
std::cerr << std::format("({}:{}) Error {}/{}: {}\n",
err.get_file(),
err.get_line(),
err.get_error(),
err.get_klass(),
err.get_message());
}
// Build repo index
std::ofstream ofs(args.output_dir / "index.html");
write_header(ofs, "Git repository", "~", "Dimitrije Dobrota");
write_repo_table(ofs, &args, "Desc", "Own");
write_header(ofs,
"Git repository",
"~",
"Dimitrije Dobrota",
"Collection of all public git repositories");
write_repo_table(ofs, repos);
write_footer(ofs);
} catch (const git2wrap::error& err) {
std::cerr << std::format("({}:{}) Error {}/{}: {}\n",
err.get_file(),
err.get_line(),
err.get_error(),
err.get_klass(),
err.get_message());
}
return 0;