diff --git a/SoC-2016-Ideas.md b/SoC-2016-Ideas.md index 9cfd554509..6048b65d9b 100644 --- a/SoC-2016-Ideas.md +++ b/SoC-2016-Ideas.md @@ -191,3 +191,72 @@ performant C code, making it a so-called "built-in". already ported by now. It is still possible to start with something small by porting portions of existing shell-scripts to C using a C helper inside the existing shell-script. + + +### Git Beginner + +Git is an incredible powerful tool with lots of different commands that +offer a variety of ways to approach source control management. Naturally +every way has advantages and disadvantages which a seasoned user can +carefully consider and out weight against each other. However, many new +users of Git are unable to cope with this variety, at least initially. +If they run into a problem they likely search the Internet and find +a StackOverflow answer instructing them to run a certain Git commands +to solve their problems. A rushed user (aren't we all?) might run these +commands without reading the docs which might makes the problem worse. + +The core of this project is to evaluate with a running prototype +if it is possible to implement a "Git Beginner Mode". The mode shall be +activated with the config "core.isbeginner" by Git users who prefer +this safety net (default should be false). + +If this mode is enabled then Git shall print a warning message before +running a potentially destructive command. In addition to the warning +Git shall print a command that would reverse the operation if possible. +Most of the information to reverse an operation is already available +via git reflog. However, the task here is to make this information +more easily accessible to Git beginners. + +The following commands should be guarded with this mechanism: + +``` +git rebase +git reset --hard +git clean -f +git gc --prune=now --aggressive +git push -f +``` + +This list can and should be extended by the student. + +### Git remote whitelist/blacklist + +Git beginners are easily confused by the distributed nature of Git. +One source of confusion are Git remotes, especially if there are +multiple ones. This is a potentially big threat to cooperations +as Git beginners might push changes to a public remote such as +github.com instead of the private company Git server. + +This project is about to implement a Git remote whitelist +and blacklist using Git config. + +Whitelist example: +``` +[remote] + default = deny + message = "Are you sure you're not pushing company code?" + allowed = http://whitelisted-hosting.org + allowed = http://git-hosting.org/whitelisted-org + allowed = http://git-hosting.org/org/whitelisted-repo +``` + +Blacklist example: +``` +[remote] + default = allow + denied = http://denied-hosting.com +``` + +If a user wants to push changes to a blacklisted remote then the `push` +command would print a generic error. If a `remote.message` is defined +then this message would be shown in addition. diff --git a/SoC-2016-Microprojects.md b/SoC-2016-Microprojects.md index 42a8ab11f4..b70f0fc53f 100644 --- a/SoC-2016-Microprojects.md +++ b/SoC-2016-Microprojects.md @@ -178,6 +178,58 @@ These still use a hand-rolled option parser, which can be replaced by using the parse-options api. Each of these files can be a microproject of its own. +### Git CI Improvements 1 + +Automated testing is an important safety net for complex software such +as Git. This micro project is about to improve the Git Travis CI +integration. + +Investigate if we can trigger Coverity static code analysis for the Git +master and maint branch (hint: Stefan Beller already looked into this). +Start here: https://scan.coverity.com/travis_ci + +### Git CI Improvements 2 + +Automated testing is an important safety net for complex software such +as Git. This micro project is about to improve the Git Travis CI +integration. + +Investigate if we can enable and run Clang static code analysis for the +master and maint branch. + +### Git CI Improvements 3 + +Automated testing is an important safety net for complex software such +as Git. This micro project is about to improve the Git Travis CI +integration. + +Investigate if we can use pylint to analyze the git-p4 Python code. + +### Git CI Improvements 4 + +Automated testing is an important safety net for complex software such +as Git. This micro project is about to improve the Git Travis CI +integration. + +* install CVS on the build machines to run t94?? and t96?? tests +* install SVN on the build machines to run t91?? tests +* install Apache Web Server to run 5539, 5550, and 5561 + +### Git CI Improvements 5 + +Automated testing is an important safety net for complex software such +as Git. This micro project is about to improve the Git Travis CI +integration. + +Git's test suit is huge and over time we have seen some flaky test. +Build a web page that analyzes the Travis CI test results and prints +the test that fail most often. Use this implementation as starting point: +https://scribu.github.io/travis-stats/#git/git + +After you have done this look at the randomly failing tests and try to +figure out why they fail. See [here](https://travis-ci.org/git/git/jobs/108417904) +for an example of such a test failure. + ### Teach "git pull --rebase" the "--[no-]autostash" option Although since 53c76dc0 git-pull understands the "rebase.autoStash"