devhub-tud / git-server Goto Github PK
View Code? Open in Web Editor NEWA git-server with a REST API and backed by Gitolite
License: Apache License 2.0
A git-server with a REST API and backed by Gitolite
License: Apache License 2.0
I found the git-push
resource in https://github.com/devhub-tud/devhub/blob/f5604b4233bae86eca9c8f4e8b6e356257111c85/src/main/java/nl/tudelft/ewi/devhub/server/web/resources/HooksResource.java , but I can't find where this resource is called?
Apparently the git diff
command doesn't work on non-bare repositories. Gitolite only creates and maintains bare repositories, and it doesn't seem to be possible/acceptable to patch Gitolite to use non-bare repositories.
As a consequence we need to define a git hook which will create a new non-bare repository somewhere on disk, and push subsequently received commits to this non-bare repository. The repository inspector code should then work on these non-bare repositories. This could be very costly in terms of disk space, since we'll have to maintain both a bare and a non-bare repository.
Alternatively we could also do a checkout and cache the result when we want to execute the git diff
command, but this would introduce a 1-10 second load time when a cache miss occurs. This seems like a less attractive option.
Fix diff blame model generation for repositories with symbolic links or submodules
Found out that dashes did not work in the git server while I was testing against LDAP (where dashes are allowed in usernames). Found the real regexpses in the Gitolite repository and replaced the regexes in the Java Gitolite Manager and the Git Models.
As I system administrator I want to know which version of the git server is running.
Initialise bare repository on repo create, to prevent 404 pages
Moved/renamed files appear as added + removed file in diff
Example:
echo "Some content" >> test.txt
git add test.txt
git commit -m "Added file"
git mv test.txt test2.txt
git commit -m "Moved file"
git push
When requesting the diff via REST (or through Devhub), the commit diff will show test.txt
as removed, and test2.txt
as newly added file.
The git server should be made available to users and clients using some form of authentication and authorization.
When pulling the repositories and creating a repository for the ti1705 course (which is loaded from the changelog.xml
), an exception is thrown because the git server can't find the group for ti1705 in the gitolite config. After adding @ti1705 = git
to the config manually, you're able to set up a repository. I think it would be more fail safe to just create the group when it's not there, or create it while setting up the project (which currently isn't possible in Devhub).
We've had issues with people submitting invalid SSH keys, or SSH keys with exotic algorithms which gitolite doesn't seem to understand.
We should check the validity of SSH keys in some way. I've looked for various implementations of SSH key checkers in Java, but none of them seemed to work. To detect invalid SSH keys on the server (once the damage was already done) I used the following command:
ssh-keygen -lf <filename>
which either produces a line like:
2048 59:78:49:21:35:ea:ba:ba:f4:3c:b8:d8:67:bf:72:1e <netID> (RSA)
or not when it's invalid. Perhaps we can use this to validate SSH keys before submitting them to gitolite.
For the TI1706 course we want students to be able to write tests for devhub. For this it would be easiest if the git-server client and build-server client would be released on the Devhub Nexus maven repository. This is also useful for re-enabling the CI without having to clone all repos, checkout the right branch, and to a maven install.
Gitolite interactions fail if merge conflicts with the gitolite-admin repo
If a group pushes the framework into their repository on GitHub, merging pull requests fails.
Because the mirror has dirty state.
Git thinks we deleted the subproject. because the JGIT clone does not recursively clone this subproject.
Proposed solutions:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.