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-buildsystem/attachments/20191014/8b97191a/attachment.html>


More information about the Kde-buildsystem mailing list