On 03/27/2014 11:46 PM, Tim Niemueller wrote:
I don't get the idea. What would it do? Currently it pretty much sounds
like an SSH session to which you login and find all the tools you need
neatly setup. What am I missing?
It has nothing to do with SSH.
It's an extension for shell application (/usr/bin/sh, like bash, zsh,
dash etc.) which enhances you command line prompt. Data is coming from
plugins. You can configure prompts conditionally, for example you can
have different prompt for different directories.
The most important plugin developed as part of this project is git
plugin. It provides data to display in shell prompt, for example:
- current branch name
- number of dirty files
- merge or rebase status
- number of merge conflicts
- number of commits you are ahead/behind of remote tracking branch
- whether working dir is clean or not
and so on...
There are some possible Fedora-specific extensions too:
- has this package newer commit in Fedora?
- am I owner or comaintainer of this package?
- what is the build status of this package?
Justification
-------------
As a packager who maintains a large number of packages (over 300
currently) I find proper git workflow to be really important to me. And
there are people that own many more Fedora packages than I do.
Moreover, proven packagers often need to commit to git report for
packages they don't own.
Having status line in your shell prompt improves workflow in several
ways, for example:
1. Working with tens or hundreds of git repos requires people to do
stuff in parallel. With git shell prompt you know what's the status of
a git repo immediately after changing directory to a its working dir:
Do I need to fetch from remote? Are there any uncommited changes? Are
there any unpushed commits? etc...
2. If someone pushes to that repo while you are working on it you'll see
it in the status line in real time. Data about commits is coming from
fedmsg. This allows you to rebase your work early. It is important as
commits in Fedora never merge cleanly (unless it's fast-forward) --
there are always merge conflicts in spec changelog and release tag.
3. You know if you have appropriate rights for that repository. Proven
packagers need to take extra steps when commiting to packages they don't
own or comatinatin.
There are other improvements too, it would take me too much time to
describe them all. That's what we have students for :)
Why Fedora?
-----------
You may wonder why this idea has to do with Fedora.
First of all, there are some Fedora-specicic improvements. But that's
not just it.
Fedora heavily relies on git. At the moment of writing this we have
15,071 [1] source packages in rawhide, each of them has its own repo.
Besides that we have repos for deprecated packages,
fedorahosted.org and
others. I don't know any other organization which has as many public
git repos as we do. Recent developments (copr, playground repo,
software collections) only complicated the situation or are about to.
Git is a great tool to maintain and rebase patches in Fedora. RPM has
direct support for git (%autosetup macro).
We also often work with upstreams and git is currently the most popular
SCM in free software development.
[1] repoquery -a --qf '%{base_package_name}' | sort -u | wc -l
--
Mikolaj Izdebski
IRC: mizdebsk
Tim
Am 27.03.2014 18:15, schrieb Ratnadeep Debnath:
> Git shell prompt daemon
>
> Status: Proposed
>
> Summary of idea: Fedora packaging is heavily dependant on git. Without
> specialized git tools, maintenance of tens or hundreds of Fedora
> packages can become tedious.
>
> This project is about implementing a deamon which would listen on
> named pipe to requests from system shell (like bash) and it would
> respond with command line prompt dependant on context (like status of
> git repository in given directory) and user configuration.
>
> The core of the daemon should not rely on git, but instead be written
> using plugin framework allowing different plugins to be implemented.
> Each plugin could provide different information to be displayed in
> shell prompt.
>
> Besides the core, a git plugin should be implemented. This plugin
> should not call git executable, but instead use a git library (such as
> libgit2 which has bindings for many languages).
>
> Knowledge prerequisite: Git, Linux, any programming language which has
> bindings for libgit2 [1]
>
> Skill level: Medium
>
> Contacts: Mikolaj Izdebski [2]
>
> Mentor(s): Mikolaj Izdebski [2], Stanislav Ochotnicky [3] (backup)
>
> [1]:
http://libgit2.github.com/
> [2]:
https://fedoraproject.org/wiki/User:Mizdebsk
> [3]:
https://fedoraproject.org/wiki/User:Sochotni
>
> Regards,
> rtnpro
>
_______________________________________________
summer-coding mailing list
summer-coding(a)lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/summer-coding