Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Consider treating WC repositories differently than BARE repositories #345

Closed
gitblit opened this issue Aug 12, 2015 · 25 comments
Closed

Consider treating WC repositories differently than BARE repositories #345

gitblit opened this issue Aug 12, 2015 · 25 comments

Comments

@gitblit
Copy link
Collaborator

gitblit commented Aug 12, 2015

Originally reported on Google Code with ID 49

After configuring gitblit.properties to read:

  git.repositoriesFolder = C:/path/to/git
  git.searchRepositoriesSubfolders = false
  ...

And accessing the http://localhost:8088, the log windows display following.
No Git directories are recognized. However these all are valid Git dirs:

    dos> cd C:\path\to\git\emacs-lisp-config-apple
    dos> git status
    # On branch master
    nothing to commit (working directory clean)



    INFO  ***********************************************************
    INFO              _____  _  _    _      _  _  _
    INFO             |  __ \(_)| |  | |    | |(_)| |
    INFO             | |  \/ _ | |_ | |__  | | _ | |_
    INFO             | | __ | || __|| '_ \ | || || __|
    INFO             | |_\ \| || |_ | |_) || || || |_
    INFO              \____/|_| \__||_.__/ |_||_| \__|
    INFO                        Gitblit v0.8.2
    INFO  
    INFO  ***********************************************************
    INFO  Running on Windows 7 (6.1)
    INFO  Setting up NIO SelectChannelConnector on port 8088
    INFO  Setting up NIO SslSelectChannelConnector on port 8443
    INFO     allowing SSL renegotiation on Java 1.7.0_01
    WARN  Failed to create temp dir D:\tmp\opt\gitblit\temp
    INFO  Reading configuration from D:\tmp\opt\gitblit\gitblit.properties
    INFO  Git repositories folder C:\path\to\git
    INFO  Setting up user service GitblitUserService
    INFO  GUS delegating to ConfigUserService(D:\tmp\opt\gitblit\users.conf)
    WARN  Mail server is not properly configured.  Mail services disabled.
    WARN  Federation passphrase is blank! This server can not be PULLED from.
    INFO  Shutdown Monitor listening on port 8081
    INFO  jetty-7.4.3.v20110701
    INFO  Extract jar:file:/D:/tmp/opt/gitblit/gitblit.jar!/ to D:\tmp\opt\gitblit\temp\webapp
    INFO  NO JSP Support for /, did not find org.apache.jasper.servlet.JspServlet
    INFO  started o.e.j.w.WebAppContext{/,file:/D:/tmp/opt/gitblit/temp/webapp/},file:/D:/tmp/opt/gitblit/gitblit.jar
    INFO  [GitBlitWebApp] init: Wicket extensions initializer
    INFO  [GitBlitWebApp] init: Wicket core library initializer
    INFO  [GitBlitWebApp] Started Wicket version 1.4.19 in deployment mode
    INFO  Started SelectChannelConnector@0.0.0.0:8088 STARTING
    INFO  Started SslSelectChannelConnector@0.0.0.0:8443 STARTING
    ERROR GitBlit.getRepository(String) failed to find C:\path\to\git\emacs-lisp-config-apple
    ERROR GitBlit.getRepository(String) failed to find C:\path\to\git\emacs-lisp-dev--anything
    ERROR GitBlit.getRepository(String) failed to find C:\path\to\git\emacs-lisp-dev--anything-config
    ERROR GitBlit.getRepository(String) failed to find C:\path\to\git\emacs-lisp-dev--anything-delicious
    ERROR GitBlit.getRepository(String) failed to find C:\path\to\git\emacs-lisp-dev--anything-eproject
    ERROR GitBlit.getRepository(String) failed to find C:\path\to\git\emacs-lisp-dev--bbdb
    ERROR GitBlit.getRepository(String) failed to find C:\path\to\git\emacs-lisp-dev--col-highlight
    ERROR GitBlit.getRepository(String) failed to find C:\path\to\git\emacs-lisp-dev--color-theme
    ERROR GitBlit.getRepository(String) failed to find C:\path\to\git\emacs-lisp-dev--crosshairs
    ERROR GitBlit.getRepository(String) failed to find C:\path\to\git\emacs-lisp-dev--css-mode
    ERROR GitBlit.getRepository(String) failed to find C:\path\to\git\emacs-lisp-dev--cssh-my
    ERROR GitBlit.getRepository(String) failed to find C:\path\to\git\emacs-lisp-dev--ditz
    ERROR GitBlit.getRepository(String) failed to find C:\path\to\git\emacs-lisp-dev--dsvn
    ERROR GitBlit.getRepository(String) failed to find C:\path\to\git\emacs-lisp-dev--dvc
    ERROR GitBlit.getRepository(String) failed to find C:\path\to\git\emacs-lisp-dev--e-blog
    ERROR GitBlit.getRepository(String) failed to find C:\path\to\git\emacs-lisp-dev--egg
    (... clip...)

Reported by jari.aalto.fi on 2012-01-27 16:00:45

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

Hmmm.

This is probably unrelated but it could be a problem:
WARN  Failed to create temp dir D:\tmp\opt\gitblit\temp

Lets fix that and then how about we start with a fresh repository root folder.
Create a new repo with Gitblit.  Verify the new repo exists and then copy over one
of your existing repos into this new root folder.

Btw, I assume your git folders are ".git" and not "_git" or some other non-standard
name.



Reported by James.Moger on 2012-01-27 16:20:56

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

The directory exists, so that is also an incorrect message:

   dos> D:
   dos> cd \tmp\opt\gitblit\temp
   dos> dir

     Volume in drive D has no label.
     Volume Serial Number is E230-655A

     Directory of D:\tmp\opt\gitblit\temp

    2012-01-27  17:50    <DIR>          .
    2012-01-27  17:50    <DIR>          ..
    2012-01-27  17:50    <DIR>          jsp
    2012-01-27  17:50    <DIR>          webapp
    2012-01-27  18:08    <DIR>          wicketFilter-filestore
           0 File(s)              0 bytes
           5 Dir(s)  437 681 913 856 bytes free


Reported by jari.aalto.fi on 2012-01-28 06:30:00

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

After creating the repository using "admin" account, the console displays:

    INFO  create repository test.git
    ERROR Method onFormSubmitted of interface org.apache.wicket.markup.html.form.IFormSubmitListener
targeted at component [MarkupContainer [Component id = editForm]] threw an exception
    org.apache.wicket.WicketRuntimeException: Method onFormSubmitted of interface org.apache.wicket.markup.html.form.IFormSubmitListener
targeted at component [MarkupContainer [Component id = editForm]] threw an exception
        at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:193)
        at org.apache.wicket.request.target.component.listener.ListenerInterfaceRequestTarget.processEvents(ListenerInterfaceRequestTarget.java:73)
        at org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:92)
        at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1252)
        at org.apache.wicket.RequestCycle.step(RequestCycle.java:1331)
        at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1438)
        at org.apache.wicket.RequestCycle.request(RequestCycle.java:546)
        at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:486)
        at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:319)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1323)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:476)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:517)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:225)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:937)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:406)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:871)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
        at org.eclipse.jetty.server.Server.handle(Server.java:346)
        at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:589)
        at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1065)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:823)
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:214)
        at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:411)
        at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:535)
        at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:529)
        at java.lang.Thread.run(Thread.java:722)
    Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:182)
        ... 29 more
    Caused by: org.eclipse.jgit.api.errors.JGitInternalException: User config file
c:\cygwin\home\jaalto\.gitconfig invalid org.eclipse.jgit.errors.ConfigInvalidException:
Cannot read file c:\cygwin\home\jaalto\.gitconfig
        at org.eclipse.jgit.api.InitCommand.call(InitCommand.java:96)
        at com.gitblit.utils.JGitUtils.createRepository(JGitUtils.java:285)
        at com.gitblit.GitBlit.updateRepositoryModel(GitBlit.java:925)
        at com.gitblit.wicket.pages.EditRepositoryPage$1.onSubmit(EditRepositoryPage.java:230)
        at org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1595)
        at org.apache.wicket.markup.html.form.Form.process(Form.java:960)
        at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:922)
        ... 34 more
    Caused by: java.io.IOException: User config file c:\cygwin\home\jaalto\.gitconfig
invalid org.eclipse.jgit.errors.ConfigInvalidException: Cannot read file c:\cygwin\home\jaalto\.gitconfig
        at org.eclipse.jgit.storage.file.FileRepository.loadUserConfig(FileRepository.java:214)
        at org.eclipse.jgit.storage.file.FileRepository.<init>(FileRepository.java:168)
        at org.eclipse.jgit.lib.BaseRepositoryBuilder.build(BaseRepositoryBuilder.java:529)
        at org.eclipse.jgit.api.InitCommand.call(InitCommand.java:91)
        ... 40 more
    Caused by: org.eclipse.jgit.errors.ConfigInvalidException: Cannot read file c:\cygwin\home\jaalto\.gitconfig
        at org.eclipse.jgit.storage.file.FileBasedConfig.load(FileBasedConfig.java:155)
        at org.eclipse.jgit.storage.file.FileRepository.loadUserConfig(FileRepository.java:212)
        ... 43 more
    Caused by: org.eclipse.jgit.errors.ConfigInvalidException: Invalid line in config
file
        at org.eclipse.jgit.lib.Config.fromText(Config.java:1053)
        at org.eclipse.jgit.storage.file.FileBasedConfig.load(FileBasedConfig.java:143)
        ... 44 more

Reported by jari.aalto.fi on 2012-01-28 06:41:40

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

Result from the above:

1. The repository was not created
2. The screen displayed "internal error" message.

I'm using Windows Home Premium 64bit, Java 1.7.0_01

Reported by jari.aalto.fi on 2012-01-28 06:48:20

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

> Btw, I assume your git folders are ".git" and not "_git"

Yes.

The create repository screen is attached.

Reported by jari.aalto.fi on 2012-01-28 06:54:12


- _Attachment: [gitblit-new-repo-1.jpg](https://storage.googleapis.com/google-code-attachments/gitblit/issue-49/comment-5/gitblit-new-repo-1.jpg)_

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

Hmmmm.  I develop on Win7 64-bit Pro with Java 6.  I have not tried Java 7 yet and I
don't use cygwin.  I would simplify your test setup.

I also see in the stacktrace that JGit can not load your .gitconfig.  I would peek
at that file and see if you can figure out why.  This could have everything to do with
why your repositories can't be loaded.

Reported by James.Moger on 2012-01-28 14:12:11

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

The HOME points to Cygwin installation /home/<logname> directory where the .gitconfig
resides. Perhaps the program could detect this case, because the file is a Cygwin symbolic
link:

  dos> type c:\cygwin\home\jaalto\.gitconfig
  !<symlink> ■vn

The few bytes from the beginning of the file are:

    dos> od -c -x 'c:\cygwin\home\jaalto\.gitconfig' | head -n 10
    0000000   #       ~   /   .   g   i   t   c   o   n   f   i   g  \n   #
           2023    2f7e    672e    7469    6f63    666e    6769    230a
    0000020  \n   #       S   e   e       h   t   t   p   :   /   /   w   w
           230a    5320    6565    6820    7474    3a70    2f2f    7777
    0000040   w   .   k   e   r   n   e   l   .   o   r   g   /   p   u   b
           2e77    656b    6e72    6c65    6f2e    6772    702f    6275
    0000060   /   s   o   f   t   w   a   r   e   /   s   c   m   /   g   i
           732f    666f    7774    7261    2f65    6373    2f6d    6967
    0000100   t   /   d   o   c   s   /   g   i   t   a   t   t   r   i   b
           2f74    6f64    7363    672f    7469    7461    7274    6269

(1) Is there a variable in gitblit.properties which could be set to point to location
of alternative HOME, that GitBlit would use, instead of system HOME variable? I could
then set up separate HOME for GitBlit's needs.

(2) After manually setting HOME to another location and copying the .gtconfig, the
backtrace no longer appears. The "test" repository gets created ok.

    dos> cd D:\tmp\tmp\gitblit
    dos> dir
    Volume in drive D has no label.
    Volume Serial Number is E230-655A

    Directory of D:\tmp\tmp\gitblit

     2012-01-28  17:32    <DIR>          .
     2012-01-28  17:32    <DIR>          ..
     2012-01-28  17:32    <DIR>          test.git
            0 File(s)              0 bytes
            3 Dir(s)  437 673 959 424 bytes free

    D:\tmp\tmp\gitblit\test.git> ls -la
    total 6
    drwx------+ 1 Administrators None   0 Jan 28 17:32 .
    drwx------+ 1 Administrators None   0 Jan 28 17:32 ..
    -rwx------+ 1 Administrators None  23 Jan 28 17:32 HEAD
    drwx------+ 1 Administrators None   0 Jan 28 17:32 branches
    -rwx------+ 1 Administrators None 392 Jan 28 17:32 config
    drwx------+ 1 Administrators None   0 Jan 28 17:32 hooks
    drwx------+ 1 Administrators None   0 Jan 28 17:32 logs
    drwx------+ 1 Administrators None   0 Jan 28 17:32 objects
    drwx------+ 1 Administrators None   0 Jan 28 17:32 refs

(3) I think where the problem is. The directories I pointed GitBlit to are Working
copies. Not "Bare Git repositories". The description in the gitblit.properties could
warn about this. Suggestion:

    # Base folder for repositories:
    # (1) Use forward slashes even on Windows!!
    #     E.g. c:/gitrepos
    # (2) Ensure that they are BARE Git repositories,
    #     not working copies (where you commit; do your work).
    # SINCE 0.5.0
    # RESTART REQUIRED
    # git.repositoriesFolder = ...

It would be nice if the error messages notified in those cases where the directories
were not detected as "BARE".

(4) After I changing git.repositoriesFolder to point to BARE repositories, all works.


Reported by jari.aalto.fi on 2012-01-28 15:47:01

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

1. JGit (a dependency) is looking for your .gitconfig, not Gitblit.  Perhaps there is
way to control where it looks, I'm not sure.  Symlinks, I suspect would be a big problem.
3. If Gitblit did not work with normal repositories (ones with working directories),
this would be a sensible suggestion.  But Gitblit works fine with them.  I do it all
the time.

I get the idea from your console logs that you are running Gitblit under Cygwin; don't
do that.  Cygwin is a great POSIX translation/emulation layer for GNU/Linux tools on
Windows.  Gitblit does not require POSIX emulation and is not designed for Cygwin's
symlinks and other idiosyncracies.

If you are not running Gitblit under Cygwin then I can not explain your results as
it works as expected on all platforms I have tested.

Reported by James.Moger on 2012-01-28 19:43:19

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

| 1. JGit (a dependency) is looking for your .gitconfig, not
| Gitblit. Perhaps there is way to control where it looks, I'm not
| sure. Symlinks, I suspect would be a big problem.

Perhaps Gitblit could make a pre-check, before letting JGit loose.

| 3. If Gitblit did not work with normal repositories (ones with
| working directories), this would be a sensible suggestion. But
| Gitblit works fine with them. I do it all the time.

In this case it don't.

| I get the idea from your console logs that you are running Gitblit
| under Cygwin; don't do that.

It's not being run under Cygwin.

The path locations point to Cygwin area, but that isn't an issue as
they are normal Windows directories and normal files to Windows to
open.

| If you are not running Gitblit under Cygwin then I can not explain
| your results as it works as expected on all platforms I have tested.

All the above was run under "dos>" (cmd.exe) as shown.

Do you have other suggestions to try, why those "Working Copy"
repositories are not recognized?

Reported by jari.aalto.fi on 2012-01-28 21:26:05

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

Ah.  I've never seen "dos>" prompts before, you must have set that which confused me.
 Can you zip the smallest repo and attach it to this issue?  Maybe we can determine
if its the repository or something about your setup.

Reported by James.Moger on 2012-01-29 00:32:52

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

So have you been successful at getting Gitblit to recognize your repositories or did
you give up?

Reported by James.Moger on 2012-02-03 13:30:41

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

| successful at getting Gitblit to recognize your repositories

<after starting the program and pointing git.repositoriesFolder to "Working Copies"
...>

I can't believe this. Now they are recognized. I have no explanation as I don't recall
making any significant changes anywhere.

Thought: I think you should give a warning for each repository that not "BARE". The
"Working Copies" (WCs) are *not* intended to be pushed and GitBlit server admin should
preferably use the the BARE repositories only.

Like in picture below which is a typical Git repository layout: sandboxes for each
developer + BARE for collective same project related work.

       WC   WC
         \  /
     WC - o - WC
         BARE

You don't usually "serve" your private WC, but the BARE one to other developers.

It would be nice to have also to safety belt for this:

> | 1. JGit (a dependency) is looking for your .gitconfig, not
> | Gitblit. Perhaps there is way to control where it looks, I'm not
> | sure. Symlinks, I suspect would be a big problem.

> Perhaps Gitblit could make a pre-check (at startup?), before letting JGit loose.

Reported by jari.aalto.fi on 2012-02-03 13:54:14

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

... i'd like to comment that GitBlit is *impressive*. Thanks for all this.

I just hope that I could have used the ISO 8601 date because that is the internationally
understood standard.

Reported by jari.aalto.fi on 2012-02-03 13:56:27

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

Thanks for the positive feedback.

You can use ISO8601 for display, I'm not stopping you.  Just modify your web.xml/gitblit.properties
file.

So in your setup there is 1 Gitblit server shared by multiple users and you have a
main repo (BARE) physically located alongside several WC clones of the main repo?

git.repositoriesFolder=/repos

/repos/main.git (BARE)
/repos/mainclone1 (WC)
/repos/mainclone2 (WC)
/repos/mainclone3 (WC)

That would seem like an unusual setup.  Gitblit is happy to view/serve any git repository
that is in the folder, regardless of BARE/WC status.

Ahhh... maybe you are using Gitblit in an ad-hoc setup?  i.e. there is no central Gitblit,
each developer has a Gitblit server and you push/pull from each other?  Like git instaweb?

If I think about it from that perspective I better understand the date format complaint
because I assume there are multiple Gtiblit's that would need to be configured for
ISO8601.

Perhaps you could set the access restriction to VIEW and disallow access for the other
developers.

As for issuing a warning when hosting a WC repository, I'll give that some consideration.
 There is nothing technically wrong with hosting a WC repository but I can see that
it could create confusion in an ad-hoc setup.

There is a roadmap item that I was considering for 0.9.0 to allow private repositories
(~username/repo).  Perhaps I can address your WC issue in that feature.

Reported by James.Moger on 2012-02-03 14:28:43

  • Status changed: Accepted

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

Let me start with Git FAQ:

    Topic: Why won't I see changes in the remote repo after "git push"?
      "A quick rule of thumb is to never push into a repository that has
      a work tree attached to it, until you know what you are doing."
      https://git.wiki.kernel.org/articles/g/i/t/GitFaq_ebc3.html

    Topic: How do I share a git public repository and use it in a CVS way?"
      "You can use git --bare init..."
      https://git.wiki.kernel.org/articles/g/i/t/GitFaq_ebc3.html

In depth explanation why non-bare is not what one wants to serve:

    "yeah yeah, but why do I need a bare repo?"
    http://sitaramc.github.com/concepts/bare.html

| So in your setup there is 1 Gitblit server shared by multiple users
| and you have a main repo (BARE) physically located alongside several
| WC clones of the main repo?
|
| git.repositoriesFolder=/repos
|
| /repos/main.git (BARE)
| /repos/mainclone1 (WC)
| /repos/mainclone2 (WC)
| /repos/mainclone3 (WC)

Not quite. The BARE repositories are used for sharing:

    git.repositoriesFolder=/repos

    /repos/project-1.git (BARE)
    /repos/project-2.git (BARE)
    /repos/project-3.git (BARE)

The GitBlit only serves the BARE repositories. Each developer clones the
bare repositoy (the clone in his WC):

     git clone <BARE address>       Developer clones project 1
     git clone <BARE address>       Developer clones project 2
     ...

Which makes the picture as described:

       WC   WC
         \  /
     WC - o - WC
         BARE

All developers can have view and commit rights.

This is the typical setup for "Git and Centalized workflow".

Similar setup is also used when a single developers interact with each
other and want to share repositories:

    Developer 1                  | Developer 2
    WC         ===>     BARE 1   | ==>> WC
    (localnet)     push   (internet) | pull/clone
                         | (no commit rights to BARE 1)
                         |
    pull/clone     <==   |  BARE 2   <== push
             | (internet)

In this picture each developer has their own GitBlit (at point "|");
view only, no commit rights. That is the typical Git workflow:

   [developer 1 / at hostA]
   cd <BARE 1>
   git --bare init
   cd <WC>
   git remote add origin <location of BARE 1>
   git push origin master
   ...

   [developer 2 / at hostB]
   git clone <BARE 1>
   ... hack ...
   cd <BARE 2>
   git --bare init
   cd <WC>
   git push <BARE 2>
   ...notify developer 1 that chnages can be pulled
   ...or developer 1 can check developer's 2 GitBlit.



Reported by jari.aalto.tamk on 2012-02-03 16:40:43

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

| I assume there are multiple Gtiblit's that would need to be configured for ISO8601.

YEs, especially when people interact each other I don't the other end would appreciate
reading Finnish locale months. The problem with English month names is the same. I
can never remember in which order to spell then, nor to map the month in numbers (did
September go before or after October; what numeric month was it?

If the default setup would be ISO 8601, GitBlit would be internationally ready instantly
without extra setup or coordination with others. Besides, ISO 8601 is perfect in computer
related software (compare to "git log --date=short" which uses ISO date representation).
The other benefits are that numeric representation is clear, compact, an unambiguous
and easily formatted in confined space (the char count is also always predictable):

   2010-12-01
   2011-03-25
   2012-07-30
   ...


Reported by jari.aalto.tamk on 2012-02-03 16:51:29

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

Also found this:

   "In Git (from version 1.7.0 and above) the repository has to be "bare" 
   (no working files) in order to accept a push."
   http://www.bitflop.com/document/111

Reported by jari.aalto.fi on 2012-02-03 17:31:49

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

... at in git-config(1) manual page:

receive.denyCurrentBranch::
        If set to true or "refuse", git-receive-pack will deny a ref update
        to the currently checked out branch of a non-bare repository.
        Such a push is potentially dangerous because it brings the HEAD
        out of sync with the index and working tree. If set to "warn",
        print a warning of such a push to stderr, but allow the push to
        proceed. If set to false or "ignore", allow such pushes with no
        message. Defaults to "refuse".

Reported by jari.aalto.fi on 2012-02-03 17:53:03

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

Gitblit was designed for centralized workflow (think Github), not distributed peer-peer
push/pull workflow which is what you are describing.  1st image here http://progit.org/book/ch5-1.html

I think what I will do is have a setting to hide repositories with working copies from
Gitblit for scenarios like yours: distributed push/pull where you are mixing your personal
repositories and your public repositories in the same folder.

Alternatively, if git.repositoriesFolder only had your public repos and you put your
WC clones in another folder you would not need this change.

Dates.
Here are the current defaults.
web.timeFormat = HH:mm
web.datestampShortFormat = yyyy-MM-dd
web.datestampLongFormat = EEEE, MMMM d, yyyy
web.datetimestampLongFormat = EEEE, MMMM d, yyyy h:mm a z

The first two are already 8601.  The next two are more descriptive and I don't want
them to be 8601.  The first two are used in places like the log page which is the analog
of "git log --date=short".  The second two are used on the commit pages, tag pages,
etc and they are just about the same (but not identical) to the output of "git log".
 I will change the default of the last one to be EEEE, MMMM d, yyyy HH:mm Z to almost
match Git.

Have you tried setting web.useClientTimezone?

That will use the above patterns combined with YOUR browser-reported timezone and should
display month and day of week in your native tongue thus solving your main complaint.

Reported by James.Moger on 2012-02-03 17:56:20

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

Wow, this is becoming an lengthy issue.  :)

Ok, you have convinced me that pushing to a non-bare repository can do Bad Things (tm).

This is what I propose:

1. I will block pushes to a repository with a working copy.
2. I will indicate (somehow) on the summary page that the repository has a working
copy.
3. I will try to find room to indicate on the repositories list that the repository
has a working copy.  Perhaps with an asterisk next to the name or something like that.
4. I will implement a setting to hide all repositories with working copies.

Does that sound agreeable to you?

Reported by James.Moger on 2012-02-03 19:14:25

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

| Gitblit was designed for centralized workflow (think Github), not
| distributed peer-peer push/pull workflow which is what you are
| describing.  1st image here http://progit.org/book/ch5-1.html
|
| I think what I will do is have a setting to hide repositories with

Please don't :-) I might want to browse WCs.

| working copies from Gitblit for scenarios like yours: distributed
| push/pull where you are 
|
| mixing your personal repositories and your public repositories in
| the same folder.

Oh, that was not the case. They were both in separate directories all
the time.

What I ment, that if the git.repositoriesFolder was set to directory
or WC repositories, it would display warning to the command line (I
use the *.bat starter command) for those:

   (WARN: Not a bare repository).

From the UI side an icon like "exclamation mark inside blue ball" or
similar could mark repositories in view which are WCs and would be
beter off not to enable any push actions.

     (!)

That was what I had in mind.


| 1. I will block pushes to a repository with a working copy.

Yes. I don't think push should be made possible form GitBlit to WCs.
Experienced users can do these kind of things; from command line.

| 2. I will indicate (somehow) on the summary page that the repository has a working
copy.

Put also comment next to  git.repositoriesFolder

| 3. I will try to find room to indicate on the repositories list that the repository
has a working copy.  Perhaps with an asterisk next to the name or something like that.

Excellent.

| 4. I will implement a setting to hide all repositories with working copies.

Excellent.

One again,
Thanks.


Reported by jari.aalto.fi on 2012-02-03 19:22:44

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

Reported by James.Moger on 2012-02-04 04:52:18

  • Status changed: Started
  • Labels added: Milestone-0.9.0

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

Reported by James.Moger on 2012-02-09 22:50:44

  • Status changed: Queued

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

Fixed in v0.9.1

Reported by James.Moger on 2012-03-28 00:02:10

@gitblit
Copy link
Collaborator Author

gitblit commented Aug 12, 2015

Fixed in v0.9.1. Closing.

Reported by James.Moger on 2012-03-28 00:03:12

  • Status changed: Fixed

@gitblit gitblit closed this as completed Aug 12, 2015
@flaix flaix modified the milestone: 0.9.0 Dec 13, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants
@gitblit @flaix and others