Le 14 mars 2012 18:56, Peter Stuge <pe...@stuge.se> a écrit :
> Ludovic Rousseau wrote:
>> So I used the OpenSC documentation at [2] and rebased my staging
>> branch (from [3]) onto gerrit/staging.
>
> Note that gerrit/staging is a so-called remote tracking branch, and
> it's best not to commit to those to avoid conflicts if other changes
> arrive from the remote than those you have made.
>
> It's best to do something like this before committing:
>
> git checkout -b staging gerrit/staging
>
> This creates a branch in the local repo called "staging" (the -b arg.)
> and then make new commits on that branch (or another, it's easy to
> make many of them). These branches are never touched by git unless
> of course it is specifically told to, but the remote tracking
> branches are used by git to synchronize with the remote, so it's
> better to not manually add commits to them.
>
>
>> The commit "pkcs15-profile.xml: remove empty SYNOPSIS section" is now
>> the first one on gerrit/staging.
>
> Ok, and git status says that you are 1 ahead?

No. Because I also have all the other patches from Opensc/staging that
need to be rebased.

$ git log --pretty=oneline --abbrev-commit  --graph --decorate
* 3196f95 (HEAD, staging) Display the flags argument of C_Initialize()
* 085e83c Fix extra spaces and tabs issues
* 5960efb pkcs15-init tool: fix for pin auth_type comparison
* 491ba2c Use the short form sc_log() instead of sc_debug()
* 285ca8e Remove extra spaces and tabs at end of lines
* b8de8f0 Fix compilation error on Windows
* c2003cf Add support for PACE-enabled readers
* 1b5fe75 Fix lookup_enum_spec() prototype
* 36f6733 pkcs11: coding style
* c1369d2 pkcs11: win32 compilation error
* 56cc676 Reformat: remove extra spaces and tabs
* e4a60ea libopensc: Add 'paranoid-memory' setting for behavior when
mlock() fails
* f938be6 libopensc: Don't fail to allocate memory when mlock fails
* 6e0f46b Adding default accessflags to the do_store_private_key
function in the same way do_generate_key has those accessflags This
seems the right thing to do, when you look at the initial commit which
added the flags in do_generate_key and the ticket
http://www.opensc-project.org/opensc/ticket/198
* 31e4ee2 Display the ASCII equivalent of a hex dump
* 26943ed Fix compiler warning and real problem
* c7d5436 Changing default usage from sign to verify, because verify
is the public key opposite of sign for the private key
* 5add841 Setting usage flags for the public key when storing a private key
* f25ca60 iso7816.c: clean up iso7816_restore_security_env()
* ae800db iso7816.c: slightly clean up iso7816_delete_file()
* 1296f86 westcos-tool.1.xml: sort options alphabetically
* 7ecc7a7 pkcs15-tool.1.xml: sort options alphabetically
* 7244bb4 pkcs15-init.1.xml: sort options alphabetically, slight rewording
* 833e389 pkcs11-tool.1.xml: sort options alphabetically
* 96832df opensc-tool.1.xml: sort options alphabetically
* a607e3b netkey-tool.1.xml: sort options & commands alphabetically
* b745fc4 eidenv.1.xml: sort options alphabetically
* f311d70 cryptoflex-tool.1.xml: sort options alphabetically
* c1ebdf7 cardos-tool.1.xml: sort options alphabetically
* 7cf22c4 westcos-tool.1.xml: slight rewording
* 5186e95 opensc-explorer.1.xml: sort options & commands alphabetically
* 0b7e75a pkcs15-crypt.1.xml: sort options alphabetically
* 34e050c piv-tool.1.xml: more harmonization, slight re-wording
* 0de1be6 opensc-explorer.1.xml: fix typos, more harmonization
* f2f37bb tools.xml: use 2 reference sections: tools & file formats
* 0ae8b37 doc/tools/*.xml: more consistent formatting
* 0717dac doc/tools/Makefile.am: substitute @pkgdatadir@
* d4fd70b doc/tools/Makefile.am: new Makefile template for autotools
* fe3dce9 doc/tools/*.xml: include manpage sections in file names
* fe48e96 doc/Makefile.am: get rid of "api.work" kludge
* 19e2c34 doc/tools/*.xml: add <refmiscinfo> class attributes
* e1356f1 doc/tools/*.xml: use <citerefentry> in "See also" sections
* 3cee29f doc/tools/*.xml: harmonize & complete <refmeta> sections
* 796e604 doc/tools/*.xml: use <refsynopsisdiv> sections
* edabae1 piv-tool.xml: fix typo
* 9c1285f pkcs15-profile.xml: remove empty SYNOPSIS section
 <-- the patch I would like to push
* a2624e5 (gerrit/staging) Remove svnignore file which is not needed
with Git    <-- gerrit is here

>> I edited the commit message to add a line:
>> Change-Id: Id824eb62bc41f8f714bd6d67b6333ea07a527d70
>> to tell gerrit it is the same patch.
>
> Sounds good.
>
>
>> Now I want to push this commit to gerrit. How do I do that?
>
> You can push the currently checked-out HEAD using:
>
> git push gerrit HEAD:refs/for/staging
>
> HEAD:refs/for/staging has local:remote format, so what is HEAD
> locally will be pushed into refs/for/staging remotely. HEAD locally
> always means "what is currently checked out" and refs/for/staging is
> gerrit magic that means proposed commit for the staging branch.
>
>
>> [2] only says:
>> "Push your changes to be included in the "staging" branch
>>
>>     git push <changes> gerrit:refs/for/staging
>>     git push some/branch gerrit:refs/for/staging
>>     git push <one-commit> gerrit:refs/for/staging "
>
> This is backwards. gerrit is the remote and comes after push. Then
> there's the local:remote specifier where local can be a branch or a
> commit or HEAD, and remote should always be refs/for/staging.

So the wiki must be updated? Can you do that?

>> What is the correct command to push only one patch?
>
> I hope the above answers about the command, but this brings me to an
> important point:
>
> git push (and git in general) almost never operates on individual
> commits, but always on the commit including all of it's history.
>
> In practise this means that when you git push something you will not
> push only the commit you identify (using HEAD, commit hash or branch
> name) but in fact you will push also all ancestor commits which the
> remote repository (gerrit) does not already have.
>
> When pushing multiple commits at once gerrit records a dependency
> between the commits, which (with the current gerrit config on
> opensc-project.org) means that these commits must be submitted in
> gerrit in the exact order and in the exact version that they were
> orignally pushed to gerrit.
>
> Keep this in mind, and create separate branches locally for making
> changes which are unrelated.
>
> The way gerrit is currently configured it is however neccessary to
> serialize locally before pushing; before an unrelated change can be
> submitted in gerrit it must be rebased onto the current latest state
> of the gerrit repository. This is the awkward part I refered to
> yesterday.

So the correct way is to create a branch for each patch/serie as
explained in [1]. Not very friendly :-(

Thanks

[1] http://stackoverflow.com/questions/3230074/git-pushing-specific-commit

-- 
 Dr. Ludovic Rousseau
_______________________________________________
opensc-devel mailing list
opensc-devel@lists.opensc-project.org
http://www.opensc-project.org/mailman/listinfo/opensc-devel

Reply via email to