git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Duy Nguyen <pclouds@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: Stefan Beller <sbeller@google.com>,
	Philip Oakley <philipoakley@iee.org>,
	Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>,
	Jeff King <peff@peff.net>,
	Michael Haggerty <mhagger@alum.mit.edu>,
	Git Mailing List <git@vger.kernel.org>
Subject: Re: [RFH] GSoC 2015 application
Date: Fri, 6 Mar 2015 18:24:34 +0700	[thread overview]
Message-ID: <20150306112434.GA10703@lanh> (raw)
In-Reply-To: <xmqqsidk3r17.fsf@gitster.dls.corp.google.com>

On Wed, Mar 04, 2015 at 10:19:16PM -0800, Junio C Hamano wrote:
> But we would need some way to say a set-based cut-off; I do not
> think using --since for that purpose is a good idea, though, because
> that is already taken for date-based cut-off, and mixing them
> together will introduce confusion.

I agree. Although I look at this from the implementation perspective:
mixing the two would make it really hard to detect which is which.
Speaking of implementation..

On Thu, Mar 5, 2015 at 5:28 PM, Nguyễn Thái Ngọc Duy <pclouds@gmail.com> wrote:
> I do have plenty of topics to finish up. But I wanted to see how this
> feature would look like. I needed to write some code for that and for
> straightening my thoughts. Totally untested, but I think it looks cool :)
>
> I think this feature is feasible. The protocol and UI are still up in
> the air. Plenty of work for any student who wants to pick this up.

I think students are losing the chance to have this fun now. A rough
implementation is available at

    https://github.com/pclouds/git/tree/shallow-since

if anybody wants to try out. I don't post it here yet because while it
seems to be working in my limited tests, there could be some corner
cases to sort out, bugs and style violations. Also tests to be added.

Documentation changes below. --not and --since can be mixed. Neither
of them can be used with --depth though, but I'd consider it a
temporary limitation.

diff --git a/Documentation/fetch-options.txt b/Documentation/fetch-options.txt
index b09a783..ec68374 100644
--- a/Documentation/fetch-options.txt
+++ b/Documentation/fetch-options.txt
@@ -13,6 +13,15 @@
 	to the specified number of commits from the tip of each remote
 	branch history. Tags for the deepened commits are not fetched.
 
+--since=<date>::
+	Deepen or shorten the history of a 'shallow' repository to
+	include all reachable commits that are after <date>.
+
+--not=<revision>::
+	Deepen or shorten the history of a 'shallow' repository to
+	exclude commits reachable from a specified remote branch or tag.
+	This option can be specified multiple times.
+
 --unshallow::
 	If the source repository is complete, convert a shallow
 	repository to a complete one, removing all the limitations
diff --git a/Documentation/git-clone.txt b/Documentation/git-clone.txt
index f1f2a3f..fc094c6 100644
--- a/Documentation/git-clone.txt
+++ b/Documentation/git-clone.txt
@@ -187,6 +187,14 @@ objects from the source repository into a pack in the cloned repository.
 	Create a 'shallow' clone with a history truncated to the
 	specified number of revisions.
 
+--since=<date>::
+	Create a 'shallow' clone with a history after the specified time.
+
+--not=<revision>::
+	Create a 'shallow' clone with a history, excluding commits
+	reachable from a specified remote branch or tag.  This option
+	can be specified multiple times.
+
 --[no-]single-branch::
 	Clone only the history leading to the tip of a single branch,
 	either specified by the `--branch` option or the primary
diff --git a/Documentation/technical/protocol-capabilities.txt b/Documentation/technical/protocol-capabilities.txt
index 4f8a7bf..3649301 100644
--- a/Documentation/technical/protocol-capabilities.txt
+++ b/Documentation/technical/protocol-capabilities.txt
@@ -179,6 +179,24 @@ This capability adds "deepen", "shallow" and "unshallow" commands to
 the  fetch-pack/upload-pack protocol so clients can request shallow
 clones.
 
+deepen-since
+------------
+
+This capability adds "deepen-since" command to fetch-pack/upload-pack
+protocol so the client can request shallow clones that are cut at a
+specific time, instead of depth. Internally it's equivalent of doing
+"rev-list --since=<time>" on the server side. "deepen-since" cannot be
+used with "deepen".
+
+deepen-not
+----------
+
+This capability adds "deepen-not" command to fetch-pack/upload-pack
+protocol so the client can request shallow clones that are cut at a
+specific revision, instead of depth. Internally it's equivalent of
+doing "rev-list --not <rev>" on the server side. "deepen-not"
+cannot be used with "deepen", but can be used with "deepen-since".
+
 no-progress
 -----------

  reply	other threads:[~2015-03-06 11:24 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-18 19:14 [RFH] GSoC 2015 application Jeff King
2015-02-18 19:32 ` Jeff King
2015-02-24 12:01   ` Johannes Schindelin
2015-02-24 12:06     ` [msysGit] " Jeff King
2015-02-24 12:25       ` Johannes Schindelin
2015-02-24 12:28         ` [msysGit] " Jeff King
2015-02-25  9:25           ` Johannes Schindelin
2015-02-25  9:39             ` Matthieu Moy
2015-02-25 10:25             ` Matthieu Moy
2015-02-25 12:15               ` Johannes Schindelin
2015-02-24 17:32     ` Matthieu Moy
2015-02-24 18:25       ` Junio C Hamano
2015-02-24 20:33         ` Johannes Schindelin
2015-02-24 21:02           ` Junio C Hamano
2015-02-24 23:56           ` Matthieu Moy
2015-02-25  0:34             ` [msysGit] " Stefan Beller
2015-02-25  9:25               ` Michael J Gruber
2015-02-25  8:44             ` Johannes Schindelin
2015-02-25 10:04               ` [msysGit] " Christian Couder
2015-02-25 10:02             ` Duy Nguyen
2015-02-25 12:10               ` Johannes Schindelin
2015-02-18 21:54 ` Junio C Hamano
2015-02-19  5:49   ` Junio C Hamano
2015-02-19 10:32 ` Matthieu Moy
2015-02-20  2:00   ` Jeff King
2015-02-20 10:06     ` Matthieu Moy
2015-02-20 10:22       ` Dennis Kaarsemaker
2015-02-20 10:34         ` Matthieu Moy
2015-02-20 23:06       ` Eric Sunshine
2015-02-20 10:31     ` [PATCH 1/3] microprojects: tweaks after discussion with Peff Matthieu Moy
2015-02-20 10:31       ` [PATCH 2/3] GSoC ideas: git bisect fixed/unfixed Matthieu Moy
2015-02-20 10:31       ` [PATCH 3/3] idea: Be nicer to the user on tracked/untracked merge conflicts Matthieu Moy
2015-02-20  3:26 ` [RFH] GSoC 2015 application Duy Nguyen
2015-02-20  7:13   ` Jeff King
2015-02-20  8:26     ` Junio C Hamano
2015-02-21  3:02       ` Support customized reordering in version sort Duy Nguyen
2015-02-21  3:25         ` Junio C Hamano
2015-02-21  3:33           ` Duy Nguyen
2015-02-21  5:12             ` Junio C Hamano
2015-02-21  5:37               ` Junio C Hamano
2015-02-26 10:44               ` [PATCH] versionsort: support reorder prerelease suffixes Nguyễn Thái Ngọc Duy
2015-02-27 21:37                 ` Junio C Hamano
2015-03-05  1:28                   ` Junio C Hamano
2015-03-09  1:01                     ` Duy Nguyen
2015-03-10  7:52                       ` Junio C Hamano
2015-03-10  8:03                         ` Eric Sunshine
2015-03-10 10:16                     ` [PATCH] config.txt: update versioncmp.prereleaseSuffix Nguyễn Thái Ngọc Duy
2015-02-20  5:35 ` [RFH] GSoC 2015 application Michael Haggerty
2015-02-20  7:29   ` Jeff King
2015-02-20  8:06     ` Junio C Hamano
2015-02-20  9:39     ` Matthieu Moy
2015-02-20  9:48       ` Jeff King
2015-02-20 11:35         ` Jeff King
2015-02-23  8:02           ` Matthieu Moy
2015-02-23 15:36             ` Jeff King
2015-03-04 22:05       ` Philip Oakley
2015-03-04 23:55         ` Stefan Beller
2015-03-05  0:17           ` Philip Oakley
2015-03-05  0:22             ` Junio C Hamano
2015-03-05  0:32               ` Stefan Beller
2015-03-05  1:17                 ` Junio C Hamano
2015-03-05  6:19                 ` Junio C Hamano
2015-03-06 11:24                   ` Duy Nguyen [this message]
2015-03-05  0:26           ` Duy Nguyen
2015-03-05 10:28         ` Nguyễn Thái Ngọc Duy
2015-03-05 10:28           ` [PATCH 1/6] upload-pack: move shallow deepen code out of receive_needs() Nguyễn Thái Ngọc Duy
2015-03-05 10:28           ` [PATCH 2/6] upload-pack: move "shallow" sending code out of deepen() Nguyễn Thái Ngọc Duy
2015-03-05 10:28           ` [PATCH 3/6] upload-pack: remove unused variable "backup" Nguyễn Thái Ngọc Duy
2015-03-05 10:28           ` [PATCH 4/6] upload-pack: move "unshallow" sending code out of deepen() Nguyễn Thái Ngọc Duy
2015-03-05 10:28           ` [PATCH 5/6] shallow.c: implement a generic shallow boundary finder based on rev-list Nguyễn Thái Ngọc Duy
2015-03-05 10:28           ` [PATCH 6/6] upload-pack: example code to use get_shallow_commits_by_rev_list Nguyễn Thái Ngọc Duy
2015-02-26 13:10 ` [RFH] GSoC 2015 application Duy Nguyen
2015-03-04 10:31   ` Jeff King
2015-03-04 11:21     ` Duy Nguyen

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

  List information: http://vger.kernel.org/majordomo-info.html

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

  git send-email \
    --in-reply-to=20150306112434.GA10703@lanh \
    --to=pclouds@gmail.com \
    --cc=Matthieu.Moy@grenoble-inp.fr \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=mhagger@alum.mit.edu \
    --cc=peff@peff.net \
    --cc=philipoakley@iee.org \
    --cc=sbeller@google.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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).