From: Farrukh Najmi <farrukh@wellfleetsoftware.com>
To: Kyle Moffett <kyle@moffetthome.net>
Cc: Robin Rosenberg <robin.rosenberg.lists@dewire.com>, git@vger.kernel.org
Subject: Any overview available on jgit codebase?
Date: Sat, 15 Nov 2008 15:21:50 -0500 [thread overview]
Message-ID: <491F2F5E.20206@wellfleetsoftware.com> (raw)
In-Reply-To: <f73f7ab80811140638m4045cf83p311c593aff066002@mail.gmail.com>
I am looking for any available docs that will help me learn the layout
of the jgit code base.
In the ideal world here is what would help newbies get productive with
the project quickly:
1. Have a clear one line description available in the javadocs for each
package.
2. Have a clear one line description available in javadocs for each
class in each package.
3. Have a clear one line description available in javadocs for each
method in each class.
I would gladly do this and contribute the changes back but its a chicken
and egg situation since I do not know the code base.
I realize its a lot to ask but would anyone familiar with code base
volunteer to do at least (1) above?
At minimum could anyone tell me what packages and classes to look at in
order to make changes to jgit so it uses a database instead of
filesystem to references.
Lastly, where can I find information on the structure of the .git directory?
Thanks for your help.
Kyle Moffett wrote:
> On Thu, Nov 13, 2008 at 3:27 PM, Farrukh Najmi
> <farrukh@wellfleetsoftware.com> wrote:
>
>> The problem I am trying to solve is this. In my service I need to store
>> metadata in a relational db and content in git such that both either commit
>> or not in a single transaction. If one commits and the other does not that
>> is a serious integrity issue. Seems to me, two phase commit would be the
>> right solution for that in the long run. This what JDBC + JMS topologies do.
>>
>
> That's really easy! First tweak jgit so that *instead* of using
> .git/refs, it uses your database to store references and exports them
> on a routine basis to .git/refs for debugging purposes. Then, for
> each database update:
>
> (1) Start transaction
> (2) Commit the change to GIT (adds ref update to the transaction)
> (3) Make other metadata updates
> (4) Commit transaction
>
> Then set up periodic garbage collection and you're done! If the
> transaction is aborted, there will simply be a bunch of random loose
> objects in the git repository, which will be cleaned up the next time
> you garbage collect. The ref update will be atomic and conditional
> with the rest of the transaction, and in git the *only* part that
> really matters for atomicity is the ref.
>
> Cheers,
> Kyle Moffett
>
>
--
Regards,
Farrukh Najmi
Web: http://www.wellfleetsoftware.com
next prev parent reply other threads:[~2008-11-15 20:23 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-13 19:59 Any plans to support JTA and XA in jgit? Robin Rosenberg
2008-11-13 20:27 ` Farrukh Najmi
2008-11-13 21:54 ` Robin Rosenberg
2008-11-14 14:38 ` Kyle Moffett
2008-11-14 14:45 ` Farrukh Najmi
2008-11-15 20:21 ` Farrukh Najmi [this message]
2008-11-15 23:15 ` Any overview available on jgit codebase? Shawn O. Pearce
2008-11-16 0:21 ` Farrukh Najmi
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=491F2F5E.20206@wellfleetsoftware.com \
--to=farrukh@wellfleetsoftware.com \
--cc=git@vger.kernel.org \
--cc=kyle@moffetthome.net \
--cc=robin.rosenberg.lists@dewire.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox