{"id":15934449,"url":"https://github.com/carlijoy/syncgitlab2msproject","last_synced_at":"2025-10-26T21:32:21.023Z","repository":{"id":37859771,"uuid":"311713651","full_name":"CarliJoy/SyncGitlab2MSProject","owner":"CarliJoy","description":"Synchronized Gitlab Issues into Microsoft Project","archived":false,"fork":false,"pushed_at":"2025-03-03T16:50:50.000Z","size":136,"stargazers_count":10,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-11T04:09:23.121Z","etag":null,"topics":["gitlab","microsoft-project","synchronization"],"latest_commit_sha":null,"homepage":"https://syncgitlab2msproject.readthedocs.io/en/latest/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CarliJoy.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.rst","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.rst","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-10T16:09:23.000Z","updated_at":"2025-03-04T10:58:58.000Z","dependencies_parsed_at":"2023-01-31T00:46:02.762Z","dependency_job_id":"d635f9a2-fc91-49e2-9754-b421787c7176","html_url":"https://github.com/CarliJoy/SyncGitlab2MSProject","commit_stats":{"total_commits":117,"total_committers":3,"mean_commits":39.0,"dds":0.5299145299145299,"last_synced_commit":"cbd78d431e838ace598400cb5add80afcb47a17d"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/CarliJoy/SyncGitlab2MSProject","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CarliJoy%2FSyncGitlab2MSProject","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CarliJoy%2FSyncGitlab2MSProject/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CarliJoy%2FSyncGitlab2MSProject/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CarliJoy%2FSyncGitlab2MSProject/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CarliJoy","download_url":"https://codeload.github.com/CarliJoy/SyncGitlab2MSProject/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CarliJoy%2FSyncGitlab2MSProject/sbom","scorecard":{"id":27398,"data":{"date":"2025-08-11","repo":{"name":"github.com/CarliJoy/SyncGitlab2MSProject","commit":"2e24c5f4dfcbf71dd1e2019a9ee691c08b0a6c97"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/2 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 28 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-14T18:13:10.815Z","repository_id":37859771,"created_at":"2025-08-14T18:13:10.816Z","updated_at":"2025-08-14T18:13:10.816Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281178955,"owners_count":26456678,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-26T02:00:06.575Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gitlab","microsoft-project","synchronization"],"created_at":"2024-10-07T03:03:06.952Z","updated_at":"2025-10-26T21:32:21.003Z","avatar_url":"https://github.com/CarliJoy.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.com/CarliJoy/SyncGitlab2MSProject.svg?branch=master\u0026status=created)](https://travis-ci.com/CarliJoy/SyncGitlab2MSProject)\n[![PyPi Version](https://img.shields.io/pypi/v/SyncGitlab2MSProject.svg)](https://pypi.org/project/SyncGitlab2MSProject/)\n[![PyPi Downloads](https://img.shields.io/pypi/dm/SyncGitlab2MSProject.svg?maxAge=2592000?style=plastic)](https://pypistats.org/packages/syncgitlab2msproject)\n[![Python Versions](https://img.shields.io/pypi/pyversions/SyncGitlab2MSProject.svg)](https://pypi.org/project/SyncGitlab2MSProject/)\n[![Wheel Build](https://img.shields.io/pypi/wheel/SyncGitlab2MSProject.svg)](https://pypi.org/project/SyncGitlab2MSProject/)\n[![Project Status](https://img.shields.io/pypi/status/SyncGitlab2MSProject.svg)](https://pypi.org/project/SyncGitlab2MSProject/)\n[![Code Style Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![Checked with mypy](http://www.mypy-lang.org/static/mypy_badge.svg)](http://mypy-lang.org/)\n[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit\u0026logoColor=white)](https://github.com/pre-commit/pre-commit)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Documentation Status](https://readthedocs.org/projects/syncgitlab2msproject/badge/?version=latest)](https://syncgitlab2msproject.readthedocs.io/en/latest/?badge=latest)\n[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/CarliJoy/SyncGitlab2MSProject.svg)](http://isitmaintained.com/project/CarliJoy/SyncGitlab2MSProject)\n[![Percentage of issues still open](http://isitmaintained.com/badge/open/CarliJoy/SyncGitlab2MSProject.svg)](http://isitmaintained.com/project/CarliJoy/SyncGitlab2MSProject)\n\n# Help wanted\n\nI don't own Microsoft Project anymore. So if there is anybody willing to take up the development/maintance, just open an issue.\n\n# SyncGitlab2MSProject\n\nSync Gitlab Issues into a Microsoft Project File.\nUse it if you use MS Project for the general project planning but want to keep\nthe Issues in Gitlab as a part of your project planning to follow the process progess.\n\nCurrently only Information from Gitlab Issues are inserted and updated within the\nProject File. Changes in synchronised fields will be overwritten.\n\nThe following MS Project attributes are synced (overwritten) from gitlab:\n  - Name\n  - Notes (from Description)\n  - Deadline (from Due Date)\n  - Work (from Time Estimated)\n  - Actual Work (from Time Spent)\n  - Percent Complete (if Tasks given for issue, otherwise only 0% and 100% [for closed])\n  - Text28 (the list of labels)\n  - Text29 (the URL to gitlab issue)\n  - Text30 (the reference to the issue is stored there)\n  - Hyperlink (link/URL to gitlab issue)\n\nNot yet implemented but planned:\n  - Resources (from Assigned)\n\nMoved issues will be handled if the group selected and the issue was moved within the\ngroup. Problem is that accessing issues only by ID is just allowed for admins.\n\n## Requirements\nThis project runs only in an Windows Environment with Microsoft Project installed.\n\n**Please note:** This Script has been tested only mit Microsoft Project 2016.\nIt cloud be, that some of the API has changed in newer versions.\nIf you run into any troubles with a new version, please open an\n[Issue](https://github.com/CarliJoy/SyncGitlab2MSProject/issues/new).\n\n## Usage\n```\nusage: sync_gitlab2msproject [-h] [--version] [-v] [-vv] [--gitlab-url GITLAB_URL] [--gitlab-token GITLAB_TOKEN] {project,group} gitlab_resource_id project_file\n\nSync Gitlab Issue into MS Project\n\npositional arguments:\n  {project,group}       Gitlab resource type to sync with\n  gitlab_resource_id    Gitlab resource id to sync with\n  project_file          Microsoft Project File to sync with\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --version             show program's version number and exit\n  -v, --verbose         set loglevel to INFO\n  -vv, --very-verbose   set loglevel to DEBUG\n  --gitlab-url GITLAB_URL\n                        URL to the gitlab instance i.e. https://gitlab.your-company.com\n  --gitlab-token GITLAB_TOKEN\n                        Gitlab personal access token\n\n```\n\n## Quickstart\n1. Optional: Install [pipx](https://github.com/pipxproject/pipx)\n2. Install the package `pipx install SyncGitlab2MSProject` (or use `pip` if you don't like pipx)\n3. Push the gitlab Issue to your MS Project file:\n`sync_gitlab2msproject --gitlab-url https://gitlab.company.com --gitlab-token \u003cyour_token\u003e group \u003cyour_group_id\u003e ms_project_file.mpp`\n\n## Open Hyplerlink Problems\nIf you have troubles that the wrong issues are opened once you click on a Hyperlink use\nthe following VBA Script as a workaround.\nSimply add the VBA script to your Ribbon and it will open all Hyperlinks of the\nselected tasks.\n\n```vbscript\nOption Explicit\n\nPrivate Declare Function ShellExecute _\n  Lib \"shell32.dll\" Alias \"ShellExecuteA\" ( _\n  ByVal hWnd As Long, _\n  ByVal Operation As String, _\n  ByVal Filename As String, _\n  Optional ByVal Parameters As String, _\n  Optional ByVal Directory As String, _\n  Optional ByVal WindowStyle As Long = vbMinimizedFocus _\n  ) As Long\n\nPublic Sub OpenUrls()\n\n    Dim lSuccess As Long\n    Dim T As Task\n    Dim Names As String\n    For Each T In ActiveSelection.Tasks\n        lSuccess = ShellExecute(0, \"Open\", T.HyperlinkAddress)\n    Next T\nEnd Sub\n\n```\n\n## Note\n\nThis project has been set up using PyScaffold 3.2.3. For details and usage\ninformation on PyScaffold see https://pyscaffold.org/.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarlijoy%2Fsyncgitlab2msproject","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcarlijoy%2Fsyncgitlab2msproject","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarlijoy%2Fsyncgitlab2msproject/lists"}