All of lore.kernel.org
 help / color / mirror / Atom feed
From: Petr Baudis <pasky@suse.cz>
To: Pavan Kumar Sunkara <pavan.sss1991@gmail.com>
Cc: Jakub Narebski <jnareb@gmail.com>,
	Christian Couder <chriscool@tuxfamily.org>,
	git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>,
	Sverre Rabbelier <srabbelier@gmail.com>,
	Shawn O Pearce <spearce@spearce.org>,
	Scott Chacon <schacon@gmail.com>, Sam Vilain <sam@vilain.net>
Subject: Re: GSoC 2010: "Integrated Web Client for git" proposal
Date: Thu, 22 Apr 2010 22:25:01 +0200	[thread overview]
Message-ID: <20100422202501.GJ10939@machine.or.cz> (raw)
In-Reply-To: <k2le72faaa81004211349o1628ed42s4fa0aa412006128@mail.gmail.com>

  Hi!

On Thu, Apr 22, 2010 at 02:19:02AM +0530, Pavan Kumar Sunkara wrote:
> a) File Structure:
> 
>    * gitweb.pl -- Main script parsing urls and calling required modules
>    * gitweb.css -- The style for the gitweb pages.
>    * gitweb.js -- javascript to make gitweb more interactive
>    * git-logo.png
>    * git-favicon.png
>    * Makefile --  Responsible for installing gitweb
>    * lib (dir) -- some basic files like config, view and other actions
>       * config.pm
>       * view.pm
>       * default.pm -- this just outputs the list of all projects.
>       * {actions}.pm -- One file for every action

  (I have reservations to this particular structure and naming, but I
don't think that's crucial for the proposal.)

> The current gitweb makefile makes a gitweb.cgi from the perl script
> and requires a server for it's working. I would like to continue this
> process but the change will be in the gitweb perl script. The new
> script includes config and other basic files, checks the URL, parses
> it, detects the action, uses the output and along with view.pm gives
> out a proper HTML, CSS web page.

Sounds fine in principle.

> The lib directory will also contain
> some basic modules like Gitweb::Repo, Gitweb::Commit which will make
> developing further functionalities easier.

Beware, this might be an awful can of worms. The previous gitweb SoC
project failed to get merged in part due to trying to do something like
this.

I recommend to avoid any large architectural changes and just shuffle
around all the utility routines to lib/Gitweb.pm or so.

> I will be using a static
> file to maintain the list of repositories which is obtained by
> scanning repositories.

Will this be compatible with the current project list file?

> b) Read modules of the client: (most of this need not be written, just
> need to be organised)
> 
>   1. See the status of repository [git status]
>   2. Show diff of the current working file compared to HEAD [git diff]
>   3. List all the commits with pagination [git log]
>   4. With every commit we can
>          * Visualise trees [git ls-tree]
>          * Visualise files and diffs [git show]
>          * Visualise annotations [git blame]
>   5. List all branches including remote ones [git branch]
>   6. Search commits, branches, authors etc.. [git grep]
> 
> c) Write modules of the client:
> 
>   1. Add Existing repositories to the gitweb -- This will list the
> given repo into static list of repos.
>   2. Create new/Clone repositories into a given path [git init | git
> clone] -- This will create new repo and list it
>   3. Add/Remove/Move files [git add | git rm | git mv]
>   4. Stage/Unstage files [git add | git reset]
>   5. Add files to ignore list when u click on 'Ignore' link
>   6. Discard changes to a file in working copy [git reset]
>   7. Commit to the repository with a log message and an optional
> sign-off [git commit]
>   8. Manage branches [git branch]
>   9. A simple branch merging* [git merge]
>  10. Creating tags [git tag]
>  11. Implementing a simple file editor
>  12. Checkout code to a specific commit or branch or tag [git checkout]
>  13. Editing config for remotes [git remote]
>  14. Push to a remote branch [git push]
>  15. Fetch/Pull from a remote branch [git fetch | git pull]
>  16. Garbage collection [git gc | git count-objects | git fsck | git prune]
>  17. Search for a part of code using pickaxe

BTW, I think you could prioritize better, e.g. (5) or (10) is rather
minor thing while (11) or (14),(15) are crucial. But this is not that
important if you are confident you will finish everything listed. ;-)

> * - Merging two branches can be quite complicated. Simple merge
> mentioned above will be just showing you that there are conflicts. But
> you won't be having options to

BTW, I don't think it's really complicated at all in the simple conflict
case - just edit the file and do git add (getting all the file-directory
etc. cases right might be more tedious, but less important).

> d) Usage of the client:
> 
> This client can be used in 2 ways.
> 
> * Install a local version using instaweb - The gitweb will be only
> accessible by you. You can browse through the git repository using
> read modules and simultaneously work on them using write modules.
> * Install on intranet - A company when installs this gitweb along with
> some other login and account managing scripts will be able to order
> their employees to login and ask them to work on the code with out the
> security risk of providing ssh access to the git repository host. The
> authentication support can be implemented as an optional part of my
> proposal.
> * Install on web - Just like normal gitweb, or enable write modules to
> look like gist.github.com

Note that for the latter two, operation mode without working copy is
essential; I have not seen you address it anywhere.

Good work, I like this better than the first proposal. :-)

-- 
				Petr "Pasky" Baudis
http://pasky.or.cz/ | "Ars longa, vita brevis." -- Hippocrates

  reply	other threads:[~2010-04-22 20:25 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-15  4:30 GSoC 2010: "Integrated Web Client for git" proposal Christian Couder
2010-04-18  0:46 ` Jakub Narebski
2010-04-18  0:59   ` Petr Baudis
2010-04-18  1:24     ` Jakub Narebski
2010-04-18  2:12       ` Petr Baudis
2010-04-18  8:52         ` Pavan Kumar Sunkara
2010-04-18 21:22           ` Jakub Narebski
     [not found]             ` <w2pe72faaa81004182334xd6fc56d7o31420ca4af867cc2@mail.gmail.com>
2010-04-19  6:35               ` Pavan Kumar Sunkara
2010-04-19 17:00               ` Jakub Narebski
2010-04-19 17:55                 ` Pavan Kumar Sunkara
2010-04-19 23:14                   ` Jakub Narebski
2010-04-20 12:17                     ` Pavan Kumar Sunkara
2010-04-18 22:31           ` Petr Baudis
2010-04-19  6:46             ` Pavan Kumar Sunkara
2010-04-19  6:50               ` Matthieu Moy
2010-04-19  7:23                 ` Junio C Hamano
2010-04-19  7:38                   ` Pavan Kumar Sunkara
2010-04-19  9:07                     ` Petr Baudis
2010-04-19 12:27                       ` Matthieu Moy
2010-04-19 12:57                         ` Pavan Kumar Sunkara
2010-04-19 13:14                           ` Matthieu Moy
2010-04-19 11:57               ` Petr Baudis
2010-04-19 18:10                 ` Pavan Kumar Sunkara
2010-04-20 11:47                   ` Petr Baudis
2010-04-18 17:50         ` Jakub Narebski
2010-04-18 19:56           ` Petr Baudis
2010-04-19 10:43             ` Jakub Narebski
2010-04-19 11:51               ` Petr Baudis
2010-04-19 18:03                 ` Pavan Kumar Sunkara
2010-04-20 12:07                   ` Petr Baudis
2010-04-20 18:14                 ` Jakub Narebski
2010-04-21 20:49                   ` Pavan Kumar Sunkara
2010-04-22 20:25                     ` Petr Baudis [this message]
2010-04-22 21:15                       ` Junio C Hamano
2010-04-23  7:10                         ` Petr Baudis
2010-04-23  9:44                           ` Junio C Hamano
2010-04-22 21:53                       ` Pavan Kumar Sunkara
2010-04-23  5:27                     ` Christian Couder
2010-04-23  5:42                       ` Pavan Kumar Sunkara

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100422202501.GJ10939@machine.or.cz \
    --to=pasky@suse.cz \
    --cc=chriscool@tuxfamily.org \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jnareb@gmail.com \
    --cc=pavan.sss1991@gmail.com \
    --cc=sam@vilain.net \
    --cc=schacon@gmail.com \
    --cc=spearce@spearce.org \
    --cc=srabbelier@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.