D24641: Collect more information from version control systems
Thomas Fischer
noreply at phabricator.kde.org
Mon Oct 14 19:59:12 BST 2019
thomasfischer created this revision.
Herald added projects: Frameworks, Build System.
Herald added subscribers: kde-buildsystem, kde-frameworks-devel.
thomasfischer requested review of this revision.
REVISION SUMMARY
In KBibTeX, there is a `getgit.cmake` <https://cgit.kde.org/kbibtex.git/tree/src/getgit.cmake> file to collect information from Git regarding the source's history assuming that the source code came from a Git repository. `ECMSourceVersionControl.cmake` can be expanded making `getgit.cmake`'s functionality available to all KDE projects.
Code from KBibTeX's `getgit.cmake` was refactored to fit `ECMSourceVersionControl.cmake` and similar code has been added to support Subversion and other version control systems.
Different version control systems are supported to different degrees:
- Git is fully supported thanks to the mature code from `getgit.cmake`
- Subversion is well supported except for the question wheter to use `last-changed-revision` or just `revision` and how to correctly compute the commit count (some `svn log ... | grep -c ...` won't be available)
- Mercurial support only covers `ECM_SOURCE_VERSION_CONTROL_BRANCH` but not `ECM_SOURCE_VERSION_CONTROL_COMMIT_COUNT` or `ECM_SOURCE_VERSION_CONTROL_REVISION`
- Bazaar is virtually incomplete. However, this seems to be a dead project anyway.
TEST PLAN
1. Create a temporary directory and copy either a .git, .svn, or .hg directory from another project into this directory.
2. Copy the patched `ECMSourceVersionControl.cmake` into this temporary directory.
3. Create a `CMakeLists.txt` file which may look like this:
cmake_minimum_required(VERSION 3.7.2)
project(ECMSourceVersionControlTest)
find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR})
include(ECMSourceVersionControl)
message(${ECM_SOURCE_UNDER_VERSION_CONTROL})
message(${ECM_SOURCE_VERSION_CONTROL_REVISION})
message(${ECM_SOURCE_VERSION_CONTROL_BRANCH})
message(${ECM_SOURCE_VERSION_CONTROL_COMMIT_COUNT})
In another temporary directory, run `cmake` referring to the first temporary directory.
REPOSITORY
R240 Extra CMake Modules
REVISION DETAIL
https://phabricator.kde.org/D24641
AFFECTED FILES
modules/ECMSourceVersionControl.cmake
To: thomasfischer
Cc: kde-frameworks-devel, kde-buildsystem, LeGast00n, GB_2, bencreasy, michaelh, ngraham, bruns
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20191014/8b97191a/attachment-0001.html>
More information about the Kde-frameworks-devel
mailing list