Hi, ----- Original Message ----- > From: "Pete Wyckoff" <pw@xxxxxxxx> > To: "Andrei Warkentin" <awarkentin@xxxxxxxxxx> > Cc: git@xxxxxxxxxxxxxxx, "Andrei Warkentin" <andreiw@xxxxxxxxxx>, "Tor Arvid Lund" <torarvid@xxxxxxxxx>, "Luke > Diamand" <luke@xxxxxxxxxxx>, gitster@xxxxxxxxx > Sent: Monday, October 17, 2011 6:32:02 PM > Subject: Re: [PATCH] Git-p4: git-p4.changeOnSubmit to do 'change' instead of 'submit'. > > Git can have multiple commits outstanding that touch the same > file, but p4 cannot really have multiple pending changes in the > same workspace that touch the same file. > > If you call "git-p4 change", it would build a p4 change for each > of those commits. If the commits happen to touch the same file, > the changes get rearranged as far as p4 is concerned so that all > changes to a given file are lumped in the first change that sees > the file. This is highly counterintuitive from a git mindset. > > The most restrictive implementation would have to: > > 1. ensure no pending changes in the P4 clientPath > 2. ensure number of commits ("git rev-list") is 1 > > You could be more permissive, allowing multiple pending changes > if the file sets do not conflict. In that case, the first test > would look at the files in pending changes and allow the > operation if they did not intersect with files in origin..master. > The second would make sure that each file appears in no more than > 1 commit in origin..master. Hmmm...I see. I'll think some more about it, then! > > Also make sure this works with preserveUser. Not sure if an > unsubmitted change can be handled the same way. > > Because it feels like a delicate operation that could have big > negative consequences, this needs a few unit tests. > > For the code structure, I'd like to see a proper subclass instead > of the dictionary idea. Something like, e.g.: > > class P4Submit(...): > def __init__(self, change_only=0) > ... > self.change_only = change_only > > class P4Change(P4Submit): > def __init__(self): > P4Submit.__init__(self, change_only=1) > > Sorry this is looking so difficult now. No problem! A -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html